Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо:SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
azure Synapse Analytics Analytics
Platform System (PDW)
Операции ввода-вывода из экземпляра ядро СУБД включают логические и физические записи. Логическая запись выполняется при изменении данных страницы в буферном кэше. Физическая запись производится при записи страницы из буферного кэша на диск.
При изменении страницы в кэше буфера она не сразу записывается на диск; Вместо этого страница помечена как грязная. Это означает, что страница может иметь несколько логических записей, сделанных до физической записи на диск. При каждой логической операции записи в кэш журнала, который записывает изменения, добавляется запись журнала транзакций. Записи журнала должны быть перенесены на диск до того, как соответствующая «грязная» страница будет удалена из буферного кэша и записана на диск.
SQL Server использует метод, известный как журналирование с предварительной записью (WAL), который предотвращает запись несохранённой страницы, прежде чем связанная запись журнала записывается на диск. Это особенно важно для правильной работы диспетчера восстановления. Дополнительные сведения см. в журнале предзаписи транзакций.
Как SQL Server записывает измененную страницу данных
На следующем рисунке показан процесс записи измененной страницы данных.
При записи страницы диспетчер буферов производит поиск «грязных» страниц, которые расположены рядом с ней и могут быть включены в ту же операцию записи. Соседние страницы имеют последовательные идентификаторы и принадлежат одному файлу; страницы не обязаны находиться подряд в памяти. Поиск в обоих направлениях продолжается до тех пор, пока не произойдет одно из следующих событий:
- Найдена чистая страница.
- Найдено 32 страницы.
- Грязная страница найдена, номер последовательности журнала (LSN) еще не был удален в журнале.
- Найдена страница, которую нельзя сразу заблокировать.
Таким образом, весь набор страниц может быть записан на диск всего одной операцией записи.
Непосредственно перед записью страницы к ней применяется та форма защиты страниц, которая указана в базе данных.
Если добавлена защита от разрыва страницы, страница должна быть защелена исключительно (EX) для ввода-вывода. поскольку защита от разрыва изменяет страницы, делая ее недоступной для чтения остальными потоками.
Если добавлена защита контрольной суммы или база данных не использует защиту страницы, она защелкна с помощью блокировки обновления (UP) для ввода-вывода. Эта кратковременная блокировка предотвращает изменение страницы во время записи, но разрешает к ней доступ для чтения.
Дополнительные сведения о параметрах защиты страниц ввода-вывода диска см. в разделе "Управление буферами".
Как грязные страницы записываются на диск
"Грязная" страница записывается на диск одним из трех способов.
Процессы медленной записи, быстрой записи и создания контрольных точек не ожидают завершения операции ввода-вывода. Они всегда используют асинхронные (или перекрывающиеся) операции ввода-вывода и продолжают работать над другими задачами, проверяя успешность операций ввода-вывода позже. Это позволяет SQL Server максимально эффективно использовать ресурсы ЦП и устройств ввода-вывода для соответствующих задач.
Отложенный процесс записи
Модуль отложенной записи — это системный процесс, который освобождает буферы, удаляя из буферного кэша редко используемые страницы. «Грязные» страницы записываются на диск первыми.
Страстный процесс записи
Во время процесса немедленной активной записи происходит запись грязных страниц данных, связанных с минимально регистрируемыми операциями (например, массовой вставкой или SELECT INTO). Это позволяет создавать и записывать новые страницы параллельно. То есть вызов операции не должен ждать завершения всей операции, прежде чем записывать страницы на диск.
Процесс контрольного пункта
Процесс контрольных точек периодически сканирует буферный кэш в поисках буферов со страницами из заданной базы данных и записывает все «грязные» страницы на диск. Контрольные точки экономят время во время последующего восстановления при помощи создания точки, в которой все «грязные» страницы гарантированно записываются на диск.
Пользователь может запросить операцию контрольной точки с помощью CHECKPOINT
команды, или ядро СУБД может создавать автоматические контрольные точки на основе объема используемого пространства журнала и времени, истекшего с момента последней контрольной точки. Помимо этого, контрольная точка создается при возникновении событий определенного рода, например когда файл журнала или файл данных добавляется в базу данных или удаляется из нее либо при остановке экземпляра SQL Server.
Дополнительные сведения см. в разделе "Контрольные точки" и активной части журнала.
Связанный контент
- Руководство по архитектуре страниц и экстентов
- Чтение страниц данных в ядре СУБД