Поделиться через


Уровни изоляции, основанные на управлении версиями строк, в ядре СУБД

В компоненте Microsoft SQL Server 2005 Database Engine по-новому реализован существовавший уровень изоляции транзакций read committed, который обеспечивает моментальный снимок уровня инструкций, основанный на управлении версиями строк. Компонент SQL Server 2005 Database Engine также представляет новый уровень изоляции транзакций — уровень моментального снимка, который обеспечивает моментальный снимок уровня транзакций, основанный на управлении версиями строк.

Уровень изоляции READ COMMITTED, основанный на управлении версиями строк, включается с помощью параметра базы данных READ_COMMITTED_SNAPSHOT, установленного в значение ON. Изоляция моментального снимка включается установкой параметра базы данных ALLOW_SNAPSHOT_ISOLATION в значение ON. Если какой-либо из параметров базы данных включен, то компонент Database Engine хранит версии каждой измененной строки. Если транзакция модифицирует строку, то изображение этой еще не модифицированной строки копируется на страницу в хранилище версий. Хранилище версий — это коллекция страниц данных в базе данных tempdb. Если несколько транзакций модифицируют строку, то несколько версий строки связываются в цепочку версий. Операции считывания, использующие управление версиями строк, восстанавливают последнюю версию каждой строки, зафиксированной до начала транзакции.

В приложениях, написанных для SQL Server 2000, в или новых приложениях для изоляция read committed, использующая управление версиями строк, выполняется указанием уровня изоляции транзакции read committed, если параметр базы данных READ_COMMITTED_SNAPSHOT установлен в значение ON. Все операции считывания просматривают версии строк, которые были зафиксированы к моменту начала выполнения инструкции. Это обеспечивает моментальный снимок данных уровня инструкций.

В приложениях, написанных для SQL Server 2005 изоляция моментального снимка выполняется указанием уровня изоляции транзакции моментального снимка, если параметр базы данных ALLOW_SNAPSHOT_ISOLATION установлен в значение ON. Все операции считывания в транзакции моментального снимка просматривают версии строк, которые были зафиксированы во время начала транзакции. Это обеспечивает моментальный снимок данных уровня транзакции.

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

В следующей таблице описываются подразделы, в которых приводятся дополнительные сведения об уровнях изоляции, основанных на управлении версиями строк.

Подраздел Описание

Основные сведения об уровнях изоляции на основе управления версиями строк

Описывается концепция управления версиями строк.

Выбор уровня изоляции на основе управления версиями строк

Описываются преимущества и недостатки управления версиями строк; даются рекомендации по созданию сценариев, наиболее подходящих для управления версиями строк.

Включение основанных на управлении версиями строк уровней изоляции

Описываются параметры, которые включают управление версиями строк в базе данных.

Использование уровней изоляции строк на основе управления версиями

Описываются ограничения уровней изоляции, основанных на управлении версиями строк.

Использование ресурсов при управлении версиями строк

Описывается, как управление версиями строк влияет на систему; обсуждаются динамические административные представления и счетчики производительности, которые возвращают сведения о состоянии управления версиями строк в базе данных и транзакциях.

См. также

Основные понятия

Уровни изоляции в ядре СУБД
Блокировка в компоненте Database Engine
Транзакции (компонент Database Engine)

Справка и поддержка

Получение помощи по SQL Server 2005