Spec-Zone .ru
спецификации, руководства, описания, API
|
InnoDB
использует асинхронный дисковый ввод-вывод где только возможно, создавая
много потоков, чтобы обработать операции ввода-вывода, разрешая другие операции базы данных продолжиться, в то
время как ввод-вывод все еще происходит. На Linux и платформах Windows, InnoDB использует доступный ОС и
библиотечные функции, чтобы выполнить "собственный" асинхронный ввод-вывод. На других платформах InnoDB
все еще использует потоки ввода-вывода, но потоки могут фактически ожидать запросов ввода-вывода, чтобы
завершиться; этот метод известен как "моделируемый" асинхронный ввод-вывод.
Если InnoDB может решить, что есть высокая вероятность, что данные могли бы скоро быть необходимы, это выполняет операции чтения вперед, чтобы принести те данные в пул буферов так, чтобы это было доступно в памяти. Обращение с несколькими большими просьбами чтения для непрерывных данных может быть более эффективным чем обращение с несколькими маленькими, просьбы распространения. В InnoDB есть две эвристики чтения вперед:
В последовательном чтении вперед, если InnoDB
уведомления, что схема доступа к сегменту в табличной области последовательна, это отправляет заранее
пакет чтений страниц базы данных к системе ввода-вывода.
В случайном чтении вперед, если InnoDB
уведомления,
что некоторая область в табличной области, кажется, находится в процессе того, чтобы быть полностью
считанным в пул буферов, это отправляет остающиеся чтения на систему ввода-вывода.
InnoDB
использует новый метод сброса файла, включающий структуру, названную буфером doublewrite.
Это добавляет безопасность к восстановлению после катастрофического отказа операционной системы или отключения
электричества питания, и улучшает производительность относительно большинства вариантов Unix, уменьшая
потребность в fsync()
операции.
Перед писанием страниц к файлу данных, InnoDB
сначала пишет им в непрерывную
область табличной области, названную буфером doublewrite. Только после записи и сброса к буферу doublewrite
завершился, делает InnoDB
запишите страницы в их надлежащие позиции в файле данных.
Если операционная система отказывает в середине записи страницы (порождение порванного
условия страницы), InnoDB
может позже найти хорошую копию страницы от буфера doublewrite во время
восстановления.