Работа с изоляцией моментального снимка
В SQL Server 2005 появился новый уровень изоляции «моментального снимка», предназначенный для повышения параллелизма приложений оперативной обработки транзакций (OLTP). В предыдущих версиях SQL Server параллелизм был основан исключительно на блокировках, что могло вызвать проблемы с блокировками и взаимоблокировками для некоторых приложений. Изоляция моментального снимка зависит от расширений управления версиями строк и предназначена для улучшения производительности путем исключения сценариев блокировки модулей чтения или записи.
Транзакции, запускаемые в режиме изоляции моментальных снимков, читают моментальный снимок базы данных на момент запуска транзакции. Один из результатов состоит в том, что поведение набора ключей, динамических и статических серверных курсоров, открываемых в контексте транзакции моментальных снимков, более походит на статические курсоры, открытые в сериализуемых транзакциях. Однако, когда курсоры открыты на уровне изоляции моментальных снимков, блокировки не применяются, что может снизить блокирование на сервере.
Дополнительные сведения об изоляции моментальных снимков в SQL Server см. в разделе Основные сведения об уровнях изоляции на основе управления версиями строк.
Поставщик OLE DB для собственного клиента SQL Server
Поставщик OLE DB для собственного клиента SQL Server располагает улучшениями, в которых используются преимущества изоляции моментальных снимков, введенные в SQL Server 2005. Среди этих улучшений — изменения наборов свойств DBPROPSET_DATASOURCEINFO и DBPROPSET_SESSION.
DBPROPSET_DATASOURCEINFO
Набор свойств DBPROPSET_DATASOURCEINFO изменен и указывает на поддержку уровня изоляции моментальных снимков благодаря добавлению значения DBPROPVAL_TI_SNAPSHOT, используемого в свойстве DBPROP_SUPPORTEDTXNISOLEVELS. Это новое значение указывает, что уровень изоляции моментального снимка поддерживается независимо от того, включено ли в базе данных управление версиями. Ниже приведен список значений DBPROP_SUPPORTEDTXNISOLEVELS:
Cвойство |
Описание |
---|---|
DBPROP_SUPPORTEDTXNISOLEVELS |
Тип: VT_I4 Чтение-запись: Только для чтения Описание: Битовая маска, указывающая поддерживаемый уровень изоляции транзакции. Сочетание может включать нуль или несколько следующих значений:
|
DBPROPSET_SESSION
Набор свойств DBPROPSET_SESSION изменен и указывает на поддержку уровня изоляции моментальных снимков благодаря добавлению значения DBPROPVAL_TI_SNAPSHOT, используемого в свойстве DBPROP_SESS_AUTOCOMMITISOLEVELS. Это новое значение указывает, что уровень изоляции моментального снимка поддерживается независимо от того, включено ли в базе данных управление версиями. Ниже приведен список значений DBPROP_SESS_AUTOCOMMITISOLEVELS:
Cвойство |
Описание |
---|---|
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.
Сведения о поддержке изоляции моментального снимка в транзакциях см. в разделе Уровень изоляции транзакций курсора.
См. также