MS SQL Server 6.5 — страница 17

  • Просмотров 16367
  • Скачиваний 420
  • Размер файла 105
    Кб

умолчанию) соответствует уровню изоляции 1 стандарта ANSI, т. е. предотвращает грязное чтение; repeatable read или serializable соответствует уровню 3 по стандарту ANSI - предотвращает грязное чтение, а также гарантирует, что два оператора select в разных местах одной транзакции будут возвращать одинаковый результат, т. е. исключает неповторяющееся чтение и фантомы. Последний, самый надежный уровень защиты транзакций является самым неоптимальным с

точки зрения быстродействия, так как за все приходится платить. Для более гибкого управления уровнем изоляции для каждого оператора select может явно задаваться опция настройки; nolock то же, что read uncommitted, - дает возможность чтения грязных (еще не зафиксированных) данных, которая перекрывает аналогичные параметры конфигурации пользовательской сессии. В операторе select можно также оговорить продолжительность блокировки данных; holdlock

инструктирует сервер держать блокировки до завершения транзакции (по умолчанию блокировки снимаются сразу же по прочтении требуемых данных; Тип и уровень блокировки: updlock заставляет применить блокировку update вместо обычной shared, используется, когда следом идет оператор update, основанный на прочитанных значениях, чтобы запретить update из других транзакций; paglock заставляет сервер при любых условиях использовать блокировки уровня

страницы; tablock принудительно блокирует таблицу (shared); tablockx принудительно блокирует таблицу (exclusive). Просмотр текущих блокировок выполняется при помощи хранимой процедуры sp_lock или через включение флага трассировки 1200 на клиента: dbcc traceon (3604,1200). Также полезным являются флаги 1204 и 1205, которые выдают информацию о cитуациях взаимной блокировки (deadlocks). MS SQL Server обладает возможностью автоматического обнаружения deadlocks как циклов в

цепочке блокировок. Он находит первый процесс, который мог бы разорвать цикл, убивает его и откатывает все транзакции этого процесса, находившиеся в стадии выполнения. Как правило, им оказывается тот самый процесс, который запросил блокировку, послужившую причиной зацикливания. После этого сервер генерирует сообщение об ошибке 1205. Если клиентское приложение имеет обработчик ошибок, отлавливающий ошибку 1205, то оно может

предпринять соответствующие действия по исправлению ситуации, и конечный пользователь, скорее всего, даже не узнает, что имела место взаимная блокировка. Надежность хранения информации В критических для бизнеса приложениях, когда сервер СУБД должен быть постоянно доступен для клиентов, большинство профилактических работ по поддержке базы данных приходится выполнять фактически в режиме on-line. MS SQL Server обладает возможностями