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


Работа с изоляцией моментального снимка

В SQL Server 2005 появился новый уровень изоляции «моментального снимка», предназначенный для повышения параллелизма приложений оперативной обработки транзакций (OLTP). В предыдущих версиях SQL Server параллелизм был основан исключительно на блокировках, что могло вызвать проблемы с блокировками и взаимоблокировками для некоторых приложений. Изоляция моментального снимка зависит от расширений управления версиями строк и предназначена для улучшения производительности путем исключения сценариев блокировки модулей чтения или записи.

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

Поставщик OLE DB для собственного клиента SQL Server

Поставщик Native Client OLE DBSQL Server включает расширения для использования преимуществ изоляции моментального снимка, появившейся в SQL Server 2005. Среди этих улучшений изменения наборов свойств DBPROPSET_DATASOURCEINFO и DBPROPSET_SESSION.

Набор свойств DBPROPSET_DATASOURCEINFO

Набор свойств DBPROPSET_DATASOURCEINFO изменен и указывает на поддержку уровня изоляции моментальных снимков благодаря добавлению значения DBPROPVAL_TI_SNAPSHOT, используемого в свойстве DBPROP_SUPPORTEDTXNISOLEVELS. Это новое значение указывает, что уровень изоляции моментального снимка поддерживается независимо от того, включено ли в базе данных управление версиями. Ниже приведен список значений DBPROP_SUPPORTEDTXNISOLEVELS.

Идентификатор свойства

Описание

DBPROP_SUPPORTEDTXNISOLEVELS

Тип: VT_I4

Чтение-запись: только чтение

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

  • DBPROPVAL_TI_CHAOS

  • DBPROPVAL_TI_READUNCOMMITTED

  • DBPROPVAL_TI_BROWSE

  • DBPROPVAL_TI_CURSORSTABILITY

  • DBPROPVAL_TI_READCOMMITTED

  • DBPROPVAL_TI_REPEATABLEREAD

  • DBPROPVAL_TI_SERIALIZABLE

  • DBPROPVAL_TI_ISOLATED

  • DBPROPVAL_TI_SNAPSHOT

Набор свойств DBPROPSET_SESSION

Набор свойств DBPROPSET_SESSION изменен и указывает на поддержку уровня изоляции моментальных снимков благодаря добавлению значения DBPROPVAL_TI_SNAPSHOT, используемого в свойстве DBPROP_SESS_AUTOCOMMITISOLEVELS. Это новое значение указывает, что уровень изоляции моментального снимка поддерживается независимо от того, включено ли в базе данных управление версиями. Ниже приведен список значений DBPROP_SESS_AUTOCOMMITISOLEVELS.

Свойство идентификатора

Описание

DBPROP_SESS_AUTOCOMMITISOLEVELS

Тип: VT_I4

Чтение-запись: только чтение

Описание: Задает битовую маску, которая указывает уровень изоляции транзакции в режиме автоматической фиксации. Значения, которые можно установить в этой битовой маске, такие же, как устанавливаемые для DBPROP_SUPPORTEDTXNISOLEVELS.

ПримечаниеПримечание

Ошибки DB_S_ERRORSOCCURRED или DB_E_ERRORSOCCURRED происходят, если значение DBPROPVAL_TI_SNAPSHOT установлено при использовании версий SQL Server, предшествующих SQL Server 2005.

Сведения о поддержке изоляции моментального снимка в транзакциях см. в разделе Поддержка локальных транзакций.

Драйвер ODBC для собственного клиента SQL Server

Драйвер ODBC для собственного клиента SQL Server обеспечивает изоляцию моментальных снимков благодаря улучшениям в функциях SQLSetConnectAttr и SQLGetInfo.

SQLSetConnectAttr

Функция SQLSetConnectAttr поддерживает использование атрибута SQL_COPT_SS_TXN_ISOLATION. Задание SQL_COPT_SS_TXN_ISOLATION значения SQL_TXN_SS_SNAPSHOT указывает, что транзакция произойдет на уровне изоляции моментального снимка.

Функция SQLGetInfo

Функция SQLGetInfo поддерживает значение SQL_TXN_SS_SNAPSHOT, добавленное в сведения о типе SQL_TXN_ISOLATION_OPTION.

Сведения о поддержке изоляции моментального снимка в транзакциях см. в разделе Уровень изоляции транзакций курсора.

См. также

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

Свойства и поведение наборов строк

Другие ресурсы

Компоненты собственного клиента SQL Server