Является ли READ COMMITED транзакционным уровнем изоляции при использовании FOR UPDATE?

Изучив в Интернете информацию об уровнях транзакционной изоляции, я понял, что блокировка строк в MySQL может быть достигнута с помощью: SELECT...FOR UPDATE или же LOCK IN SHARE MODE а также, что запрос на блокировку строки должен выполняться после запуска транзакции. Итак, я наткнулся на пример, иллюстрирующий реализацию уровня изоляции READ COMMITTED для двух сессий:

--session 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

BEGIN TRANSACTION;

SELECT FirstName FROM EmployeeInfo
WHERE EmpID = 1;

WAITFOR DELAY '00:00:05'  

SELECT FirstName FROM EmployeeInfo
WHERE EmpID = 1;

ROLLBACK TRANSACTION;

Код для сеанса 2 выглядит так:

 --session 2
 UPDATE EmployeeInfo
 SET FirstName = 'Frank'
 WHERE EmpID = 1;

В примере кода для session1 уровень изоляции транзакции и начало транзакции являются явными. В каком-то блоге я читал, что

  • Операторы UPDATE неявно создают блокировки READ для затронутых строк в транзакции. Значит ли это, что я могу смело опустить SET TRANSACTION ISOLATION LEVEL READ COMMITTED; из сеанса 1 и по-прежнему получают те же результаты. Другими словами, насколько истинным является утверждение, операторы UPDATE неявно создают блокировки READ для затронутых строк в транзакции.

0 ответов

Другие вопросы по тегам