7.5.6.1 Контрольные точки
В InnoDB реализован механизм контрольных точек, который получил название
нечеткой контрольной точки. В InnoDB измененные страницы базы данных
сбрасываются из буфера на диск небольшими частями. Сбрасывать содержимое
буфера одним большим пакетом нет необходимости, так как это приведет к
временной остановке обработки операторов пользователей.
В случае восстановления после сбоя InnoDB производит поиск меток
контрольных точек, записанных в файлы журналов. Известно, что все
изменения базы данных, внесенные перед меткой, уже записаны в образ базы
данных на диске. Затем InnoDB производит сканирование файлов журналов
начиная от места контрольной точки, и вносит зафиксированные изменения в
базу данных.
Запись в файлы журналов в InnoDB осуществляется по круговому методу. Все
внесенные изменения, после которых страницы базы данных в буфере начинают
отличаться от образа на диске, должны быть записаны в файлы журналов, на
случай, если InnoDB понадобится произвести восстановление. Это означает,
что когда InnoDB начинает повторно использовать файл журнала по круговому
методу, производится проверка на наличие в образах страниц базы данных на
диске изменений, зафиксированных в файле журнала, который InnoDB
собирается повторно использовать. Иначе говоря, необходимость поставить
контрольную точку зачастую приводит к тому, что InnoDB сбрасывает
измененные страницы базы данных на диск.
Из сказанного выше становится понятно, почему при больших файлах журналов
сокращается количество дисковых операций ввода/вывода при создании
контрольных точек. Иногда имеет смысл задавать общий размер файлов
журналов равным буферному пулу или даже больше. Недостатком больших файлов
журналов является то, что восстановление после сбоя может длиться дольше,
так как к базе данных придется применить больше информации из файла
журнала.