Spec-Zone.ru › MySQL 9.2

17.11.1 InnoDB Ввод/вывод на диск

InnoDB использует асинхронный ввод/вывод на диск, где это возможно, создавая ряд потоков для обработки операций ввода/вывода, позволяя другим операциям базы данных продолжаться, пока операции ввода/вывода ещё выполняются. На платформах Linux и Windows, InnoDB использует доступные функции операционной системы и библиотеки для выполнения “родного” асинхронного ввода/вывода. На других платформах, InnoDB всё ещё использует потоки ввода/вывода, но потоки могут фактически ожидать завершения запросов ввода/вывода; этот метод известен как “симулированный” асинхронный ввод/вывод.

Предварительная загрузка

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

  • При последовательной предварительной загрузке, если InnoDB замечает, что образец доступа к сегменту в табличном пространстве является последовательным, оно предварительно посылает пакет операций чтения страниц базы данных в систему ввода/вывода.

  • При случайной предварительной загрузке, если InnoDB замечает, что некоторые области в табличном пространстве, похоже, в процессе полного чтения в кэш-память, оно посылает оставшиеся операции чтения в систему ввода/вывода.

Для получения информации о настройке эвристик предварительной загрузки, см. Раздел 17.8.3.4, «Настройка предварительной загрузки буфера InnoDB (предварительная загрузка)».

Буфер двойной записи

InnoDB использует новаторский метод сброса файлов, включающий структуру, называемую буфером двойной записи, которая включена по умолчанию в большинстве случаев (innodb_doublewrite=ON). Он добавляет безопасность к восстановлению после непредвиденного выхода или отключения питания и улучшает производительность на большинстве разновидностей Unix, уменьшая необходимость в fsync() операциях.

Перед записью страниц в файл данных, InnoDB сначала записывает их в область хранения, называемую буфером двойной записи. Только после завершения записи и сброса в буфер двойной записи InnoDB записывает страницы в их надлежащие позиции в файле данных. Если существует операционная система, подсистема хранения или непредвиденный выход процесса mysqld в середине записи страницы (что приводит к состоянию ), InnoDB позже может найти хорошую копию страницы из буфера двойной записи во время восстановления.

Для получения дополнительной информации о буфере двойной записи, см. Раздел 17.6.4, «Буфер двойной записи».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-disk-io.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API