Может ли одно соединение SQL выполнять параллельные транзакции? - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь разобраться в том, как несколько транзакций взаимодействуют с базовыми соединениями, которые есть в распоряжении клиентской библиотеки 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, в частности?
  • Есть ли другой способ решения этой проблемы, о котором я не знаю?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...