Справочное руководство по MySQL




7.5.8.1 Согласованное чтение

Согласованное чтение означает, что для того, чтобы предоставить запросу копию базы данных на текущий момент времени, используется многовариантность таблиц InnoDB. Для запроса доступны лишь те изменения, которые были внесены транзакциями, зафиксированными на этот момент времени, и не доступны изменения, сделанные незафиксированными или проведенными позже транзакциями. Исключением из данного правила могут стать только изменения, внесенные транзакцией, направляющей текущий запрос.

Когда транзакция выполняет свое первое согласованное чтение, InnoDB устанавливает копию, или временную отметку, которая будет использоваться для всех согласованных чтений данной транзакции. В копии отражены все транзакции, зафиксированные до момента снятия копии. Таким образом, согласованные чтения в пределах одной транзакции будут согласованными по отношению друг к другу. Можно получить более свежую копию для своих запросов - для этого следует зафиксировать текущую транзакцию и направить новые запросы.

Согласованное чтение является режимом по умолчанию, в котором в InnoDB обрабатываются операторы SELECT. При согласованном чтении не устанавливаются блокировки на таблицы, к которым обращается запрос, и, таким образом, остальные пользователи могут вносить изменения в эти таблицы одновременно с согласованным чтением таблиц.


7.5.8 Транзакционная модель InnoDBОглавление7.5.8.2 Чтение с блокировкой