|
Программирование >> Реализация баз данных
ГЛАВА 12 Управление транзакциями и блокировками в SQL Server Занятие 1. Архитектура транзакций и блокировок 346 Занятие 2. Управление транзакциями в SQL Server 354 Занятие 3. Управление блокировками в SQL Server 366 Закрепление материала 377 В этой главе С помощью акиий и блокировок SQL Server обеспечивает согласованность и целостность всех БД, несмотря aFoirm:- в системе ошибки. Транзакция - это логическая единица работы, из набора операторов, таких, как SELECT или UPDATE. Блокировки предотвращают конфликты, запрещая пользователям чтение или модификацию данных шихся в процессе изменения другими пользователями. Блокирование предотвращает модификацию данных, находящихся под влиянием транзакций. В этой главе вы познакомитесь ктими и блокировками, а затем узнаете, как они используются при обработке данных. Прежде всего Для изучения материалов этой главы вам понадобится: SQL Server 2000 Enterprise Edition, установленный на компьютере под управлением Windows 2000 Server; возможность зарегистрироваться на компьютере под управлениеOws 2000 Server и SQL Server в качестве администратора; результаты упражнений из глав 3, 4, 5 и 7. 34 Давление транзакциями вками в SQL Server Глава 12 Занятие 1. Архитектура транзакций и блокировок Транзакции позволяют SQL Server набор операторов как еди- ное целое. При исполнении транзакции блокировка шают другим пользователям доступ к данным, находящимся под влиянием этой транзакции. Транзакционность поддерживается рядом архитектурных компонентов SQL Server: журналами транзакций, механизмом управления параллельным выполнением, блокировками и компонентами поддержки распределенных запросов. Все перечисленные компоненты и их роль в поддержке транзакций SQL Server обсуждаются на этом занятии. Изучив материал этогтия, вы сможете: перечислить и описать архитектурные компоненты SQL Server, поддержку транзакций. Продолжительность занятия - около 30 минут. Архитектура журнала транзакций В каждой БД SQL Server имеется журнал транзакций, где регистрируются все транзакции и модшЬчк 11>><< БД, выполняемые каждой транзакцией. Он поддерживает 3 вида операций. Восстановление отдельных транзакций. Если приложение исполняет оператор ROLLBACK или SQL Server обнаруживает какую-либо ошибку (например, потерю связи с клиентом), записи журнала транзакций используются для отката любых изменений, сделанных во время выполняемой транзакции. Восстановление исс\ незавершенных 1( анзакиий при запуске SQL Server. При аварии сервера, на котором работает SQL Server, в некоторых БД не хватает на запись отдельных модификаций из кэш-5уфера в файлы данных. В этой ситуации в файлах данных возможно появление сделанных незавершенными транзакциями. После запуска экземпляр SQL Server начинает восстановление всех БД. При этом выполняется повтор всех модификаций, зарегистрированных в журнале, но не записанных в файлы данных, и откат незавершенных транзакций, найденных в журнале. Так обеспечивается целостность БД. Восстановление БД путем повтори все нрованных до момента аварии действий. После потери БД, что при отказе жесткого диска в случае отсутствия на сервере RAID, БД все-таки удается вернуть в состояние, в котором она находилась на момент сбоя. Сначала . cjyci восстановить полную или дифференциальную копию БД, а затем - последовательность резервных копий журналов транзакций вплоть до момента сбоя. При восстановлении каждой копии журнала SQL Server повторяет все транзакции, заново выполняя все зарегистрированные в журнале модификации. При восстановлении копии журнала SQL Server использует ее информацию для повтора всех незавершенных на данный момент транзакций. Журнал транзакции реализован не в виде таблицы, а как отдельный файл или группа файлов в составе БД. Управление кэшем журнала осуществляется отдельно от кэш-буфера страниц данных, что обеспечивает простоту, скорость работы и стабильность кода в составе механизма БД. На формат записей и страниц журнала не налагаются ограничения формата страниц данных. Журнал макни можно реализовать в нескольких файлах, для которых при необходимости разрешается определить значение параметра что снижает потенциальную возможность исчерпания свободного места в журнале и уменьшает издержки на администрирование. Неиспользуемые части журнала утилизируются достаточно быстро, поэтому влияние этого процесса на пропускную способность при обработке транзакции минимально. Упреждающая регистрация транзакций Подобно многим реляционным СУБД, SQL Server 2000 использует упреждающую регистрацию транзакции, которая гарантирует, что модификации будут записаны на диск не раньше, чем ассоциированные с ними записи журнала. SQL Server использует кэш-буфер при чтении страниц во время извлечения данных. Вместо непосредственной модификации данных на диске выполняется модификация копии страницы в кэш-буфере. Модификации не записываются на диск до генерации в БД контрольной точки или до сброса модификации на диск для размещения в буфере новой страницы. Запись модифицированной страницы данных из кэш-буфера на диск называется сбросом страницы (page iUi.bi. Страница, модифицированная в кэше, но cuic не iaioi-санная на диск, называется измененной или знои страницей. Во время модификации страницы буфере в кэше журнала создается запись, регистрирующая модификацию. Эта запись журнала должна оказаться на диске до сброса соответствующей измененной страницы из кэш-буфера на диск. Если измененная страница сбрасывается раньше появления записи в журнале, на диске возникает модификация, которую не удастся отменить, если перед сбросом записи журнала на диск произойдет авария сервера. Логика SQL Server не допускает сброса измененной страницы до сброса записи журнала, ассоциированной с этой страницей. Поскольку записи журнала всегда сбрасываются раньше соответствующих страниц данных, такой журнал называется журналом с упреждающей записью. Логическая структура журнала транзакций Логически журнал транзакций SQL Server функционирует как последовательный набор записей. Каждая запись журнала идентифицируется порядковым номером в журнале (log sequence number, LSN). LSN каждой новой записи, добавляемой к логическому концу журнала, больше, чем LSN предыдущей записи. В записях журнала о модификациях регистрируются логические операции или образы модифицированных данных до и после модификации. Образ до модификации - . копия данных, сделанная до выполнения операции, а образ после модификации - копия данных после завершения операции. В журнале транзакций регистрируются следующие типы операций: начало и конец каждой транзакции; каждая модификация (добавление, обновление, удаление) данных; выделение и освобождение каждого экстента; создание и удаление таблицы или индекса. Записи журнала хранятся в порядке их создания. Каждая запись журнала помечена идентификатором транзакции, которой она принадлежит. Все записи журнала, ассоциированные с одной транзакцией, последовательно связаны друг с другом посредством обратных указателей, что ускоряет откат транзакции. При откате все исполняемые операторы также регистрируются. Для каждой транзакции в журнале резервируется место, достаточное для ее отката в случае возникновения
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |