Программирование >>  Администрирование microsoft sql 

1 ... 42 43 44 [ 45 ] 46 47 48 ... 203


SQL Server 2000 периодически записывает затронутые страницы из кэша на диск. Запись данных на диск производится либо в результата есса, называемого контрольной точкой (checkpoint process), либо когда поток ОС - рабочий или же поток отложенной записи (lazy writer) - просматривает затронутые страницы, записывает их на диск и освобождает пространство в буферном кэше для новых данных. Потоки ОС могут записать затронутые на до того, как SQL Server 2000 опреде-

лит, завершена ли транзакция. если транзакция отменена или не была

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

Процесс контрольной точки

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

При создании БД логический журнал транзакций создает первый физический

файл журнала, который также совпадает с началом первого виртуального файла журнала. Логический журнал акииfi представляет собой ту часть, которая требуется для восстановления и резервного копирования. Ее размер зависит от выбранной модели восстановления. Подробнее о механизмах резервного копирования и восстановления - в главе 8.

Как работает журнал транзакций

SQL Server 2000 использует буферный кэш - хранящуюся в памяти структуру, куда помещаются страницы данных с диска, с которыми будут

приложения и пользователи системы. Любое изменение страницы данных вносится в копию этой страницы в буферном кэше. Измененная страница в кэше, которая еще не была записана на диск, называется затронутой страницей (dirty page). Так как изменения записываются сначала в журнал транзакций, а потом на диск, журнал транзакций SQL Server 2000 называют опережающим (write-ahead). Встроенные внутренние механизмы проверки SQL Server 2000 следят за тем, чтобы изменение было занесено в журнал транзакций до того, как соответствующая затронутая страница будет записана на диск. Запись затронутой страницы из кэша на диск называется сбросом страницы (page flushing).

Запись журнала транзакций содержит всю информацию, необходимую для отмены или повторения любого изменения БД, включая выделение экстентов и изменение индексов. Благодаря этому любое записанное на например изменение страницы данных или создание нового объекта БД, может быть отменено, если транзакция, вызвавшая изменение, была прервана из-за сбоя в работе сервера или в результате команды отмены транзакции) и ее невозможно либо может быть подтверждено, если транзакция была завершена, но ее выполнения не был записан на диск, например, из-за неисправности сервера.

Примечание Благодаря отмена еиных изменений, резервное копирование журнала транзакций позволяет воссоздать БД при повреждении диска с файлами данных, именно поэтому следует хранить журнал транзакций на другом диске, отдельно от

файлов данных.



Занятое 2 Структура журнала транзакций j 29

если используется оператор CHECKPOINT;

если используется оператор ALTER DATABASE;

при корректном завершении работы экземпляра SQL Server 2000;

при автоматическом запуске процесса контрольной точки (выполняется периодически в зависимости от количества записей в активной части журнала транзакций, а не от времени, прошедшего с момента последнего выполнения контрольной

точки).

контрольной точки записывает наименьший LSN, необходимый для успешной отмены невыполненной транзакции. Этот номер называется минимальным LSN (MinLSN). Он определяется либо наименьшим LSN самой ранней активной транзакции, либо началом самой ранней транзакции при которой дан-

ные не были получены всеми серверами-подписчиками, либо началом процесса контрольной точки. Часть журнала транзакций от MinLSN до последней записи является активной. Она необходима для успешной отмены ранзакиий. При запуске SQLServer 2000 (в обычном режиме или посл я) в каждой БД начинается процесс восстановления. Он проверяет журнал транзакций на наличие завершенных транзакций, результаты которгх не были записаны на диск, и записывает их. Он также ишет неподтвержденные транзакции и проверяет, что их результаты не были записаны на диск, в противном случае все изменения удаляются. MinLSN указывает наименьший

LSN, который должен при этом просматривать SQL Server 2000.

Записи кциях с номерами меньше MinLSN не являются активными (процесс контрольной точки гарантирует, что они уже записаны на диск). Для повторного использования пространства, занимаемого этими записями, они должны быть удалены из файла журнала транзакций (что достигается усечением журнала). Минимальной единицей, которая удаляется при усечении журнала, является виртуальный файл журнала транзакций; но часть виртуального файла является частью активного журнала, его удалять нельзя. При использовании простой модели восстановления (Simple Recovery model) процесс контрольной точки просто удаляет неактивную часть журнала из всех виртуальных файлов, и они потом используются повторно. При использовании модели восстановления отдельных операций (Full Recovery model) или модели восстановления псшптатов импорта (Bulk-Logged Recovery model) вам необходимо предварительно создать копию журнала транзакций, чтобы затем удалить его неактивную часть. Подробнее о резервном копировании журнала транзакций - в главах 8 и 9.

Примечание Из журнала такыий удаляются записи с номерами меньше MinLSN, записи же активной части остаются.

На рис-.Э показан журнал транзакций после процесса контрольной точки, неактивная часть журнала уже удалена. Обратите внимание, что LSN процесса контрольной точки меньше MinLSN.

Процесс контрольной точки освобождает пространство в физическом файле журнала транзакций, и это пространство используется логическим файлом, после того как он достигнет конца последнего физического файла. Когда это происходит, он вновь возвращается в начало первого физического файла (при условии, что первый виртуальный файл удален). Если первый виртуальный файл не был удален и не установлено автоматическое увеличение размера журнала транзакций (или если весь диск заполнен), SQL Server 2000 не может продолжать работать. На рис. 5-4 показано воз-



вращение логического журнала в начало первого физического файла (такой способ

называется циклическим обновлением при ведении журнала).

Виртуальный

Виртуальный

Вирту;альный

Виртуальный

Виртуальный

файл 1

файл 2

файл 3

файл 4

файл 5

исзвдльзуется

Усечены

It t

Начало логического журнала

MinLSN

Последняя 1 ;онец контрольная лотческого точка журнала

Рис. 5-3. Журнал транзакций после усечения неактивной части

Виртуальный Виртуальный Виртуальный Виртуальный файл 1 файл 2 файл 3 фш4

-->

Усечены

i J

MinLSN

[ t

Конец логического журнала

Начало Предпоследняя Последняя логического контрольная контрольная журнала точка точка

Рис. 5-4. Циклическое обновление при ведении журнала транзакций

Потоки операционной системы

SQL Server 2000 используемч и поток (worker thread) и поток отложенной записи (lazy writer thread) для периодического обращения к буферу памяти, планирования асинхронной записи на диск затронутых страниц и освобождения неактивных страниц для повторного использования. Поток - это компонент операционной системы, который позволяет выполнять различные независимые процессы параллельно. Запись затронутой страницы в журнал транзакций происходит до записи данных на диск. Рабочие потоки являются потоками других процессов SQL Server 2000, таких как процесс асинхронного чтения данных, инициированный пользователем. Эти потоки обращаются к кэшу буфера, ожидая выполнения своего задания. Поток отложенной записи также периодически проверяет список свободных буферов, и, если его размер меньше определенного значения (в зависимости от размера кэша), он сканирует буферный кэш и освобождает пространство. Термин отложенная запись отражает принцип работы данного потока, который просыпается на некоторое время,

сканирует буфер и снова засыпает .



1 ... 42 43 44 [ 45 ] 46 47 48 ... 203

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика