Ускоряй SQL-транзакции с помощью batched inserts/updates и минимизации количества round‑trip'ов
Одна из главных причин медленных транзакций — множество отдельных запросов. Каждый INSERT или UPDATE — это отдельная поездка в базу (round-trip), которая стоит времени и ресурсов.
Решение: объединяй операции в батчи, используй
VALUES (...), (...), (...) или CASE WHEN для обновлений.Пример:
-- Вместо этого (медленно):
INSERT INTO logs (user_id, action) VALUES (1, 'login');
INSERT INTO logs (user_id, action) VALUES (2, 'logout');
INSERT INTO logs (user_id, action) VALUES (3, 'login');
-- Делай так (быстрее):
INSERT INTO logs (user_id, action)
VALUES
(1, 'login'),
(2, 'logout'),
(3, 'login');
-- Аналогично для обновлений:
UPDATE accounts
SET balance = CASE user_id
WHEN 1 THEN 100
WHEN 2 THEN 200
WHEN 3 THEN 300
END
WHERE user_id IN (1, 2, 3);
📌 Преимущества:
– Меньше сетевых вызовов
– Лучше используется план выполнения
– Меньше блокировок и нагрузка на транзакционный лог