Я пытаюсь разобраться в том, как несколько транзакций взаимодействуют с базовыми соединениями, которые есть в распоряжении клиентской библиотеки SQL. Некоторые библиотеки абстрагируют это, поэтому вам не нужно думать о том, как обрабатываются транзакции. Однако я хочу знать, что происходит в этом сценарии:
- Предположим, у нас есть только одно соединение
- Предположим, что мы хотим запустить 2 транзакции одновременно.
Возможно ли это через одно соединение? Или, если нам нужен параллелизм, необходимо хотя бы одинаковое количество соединений?
Чтобы прояснить ситуацию, я напишу некоторый псевдо-SQL -код, помните, что он выполняется в одном соединении:
BEGIN TRANSACTION 1
BEGIN TRANSACTION 2
WITH TRANSACTION 2 DO SOMETHING
WITH TRANSACTION 1 DO SOMETHING ELSE
COMMIT TRANSACTION 1
COMMIT TRANSACTION 2
Дополнительные вопросы
- Как это обрабатывается различными поставщиками?
- Как это обрабатывается MySQL, в частности?
- Есть ли другой способ решения этой проблемы, о котором я не знаю?