MySQL REPEATABLE-READ изоляция не работает должным образом - PullRequest
0 голосов
/ 26 октября 2018

Я использую MySQL: 5.7.24.

Мой уровень изоляции установлен на «REPEATABLE-READ», и я пытаюсь выполнить 2 транзакции (T1, T2), где команды выполняются в следующем порядке:

 1) T1: begin transaction  
 2) T2: begin transaction  
 3) T1: read a row R1 
 4) T2: update row R1 which is successful 
 5) T1: read the same row R1 (and gets old value) 
 6) T2: commit 
 7) T1: commit

Я ожидал, что шаг (4) должен быть заблокирован, так как он уже прочитан T1, чего не происходит. Может кто-нибудь объяснить, пожалуйста, где я не прав?

Также у меня есть следующий порядок транзакций:

1) T1 Begin Transaction
2) T2 Begin Transaction
3) T1 reads R1
4) T2 reads R1
5) T1 updates R1
6) T2 updates R2
7) T1 commit
8) T2 commit

Я хочу, чтобы транзакция от T2 / T1 до rollback (кто обновится позже), поскольку она обновляет R1, который уже изменен (или в момент, когда он был прочитан, он уже обновлен какой-либо другой транзакцией), что мне делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...