bigton
@bigton
Web-программист

Сколько одновременных транзакций можно выполнять к одним и тем же таблицам?

Всем привет.

У меня вопрос по производительности транзакций.

Допустим есть какой-то сценарий который делает выборку из 6 таблицы, а потом делает вставку в 4 другие таблицы.
Весь сценарий (включая SELECT запросы) обернут в транзакцию.
Этот сценарий параллельно выполняют 500 потоков.

START TRANSACTION;
SELECT f FROM t1;
SELECT f FROM t2;
SELECT f FROM t3;
SELECT f FROM t4;
SELECT f FROM t5;
SELECT f FROM t6;
INSERT INTO t7;
INSERT INTO t8;
INSERT INTO t9;
INSERT INTO t10;
COMMIT;

Я полагаю, что таким образом на 100% гарантируется консистентность данных.

Вопросы:
1. Допустимо ли оборачивать в транзакции SELECT запросы?
2. Есть ли какое-то ограничение на количество запросов в транзакции?
3. Есть ли какое-то ограничение на количество потоков которые пытаются выполнить одновременно такой набор SQL инструкций?
4. Насколько большое количество конкурентных транзакций влияют на производительность?

Спасибо за ответы.
  • Вопрос задан
  • 422 просмотра
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
1. Допустимо ли оборачивать в транзакции SELECT запросы?
- В режиме Read Committed запрос SELECT не будет видеть не закомиченные данные ваших вставок и если вы хотите видеть эти данные до комита, то нужно select вносить в транзакцию.

2. Есть ли какое-то ограничение на количество запросов в транзакции?
- Это зависит от размера лог файла для транзакции, глобальный параметр innodb_log_file_size

3. Есть ли какое-то ограничение на количество потоков которые пытаются выполнить одновременно такой набор SQL инструкций?
- Есть ограничение на кол-во открытых транзакций 128 * 1023.

4. Насколько большое количество конкурентных транзакций влияют на производительность?
- Чем больше работаете с БД тем больше на нее нагрузка. )))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы