Spec-Zone.ru › MySQL 9.2

17.8.6 Использование асинхронного ввода-вывода на Linux

InnoDB использует подсистему асинхронного ввода-вывода (родной AIO) на Linux для выполнения запросов предварительной загрузки и записи для страниц файлов данных. Это поведение контролируется параметром конфигурации innodb_use_native_aio, который применяется только к системам Linux и по умолчанию включен. На других системах Unix-подобного типа InnoDB использует только синхронный ввод-вывод. Раньше InnoDB использовал асинхронный ввод-вывод только на системах Windows. Использование подсистемы асинхронного ввода-вывода на Linux требует библиотеки libaio.

При синхронном вводе-выводе потоки запросов ставят в очередь запросы ввода-вывода, а InnoDB фоновые потоки извлекают запросы из очереди по одному, выполняя вызов синхронного ввода-вывода для каждого. Когда запрос ввода-вывода завершается и вызов ввода-вывода возвращается, InnoDB фоновый поток, обрабатывающий запрос, вызывает функцию завершения ввода-вывода и возвращается для обработки следующего запроса. Количество запросов, которые могут быть обработаны параллельно, равно n, где n — это количество InnoDB фоновых потоков. Количество InnoDB фоновых потоков контролируется innodb_read_io_threads и innodb_write_io_threads. См. Раздел 17.8.5, «Настройка количества фоновых потоков ввода-вывода InnoDB».

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

Преимущество родного AIO заключается в масштабируемости для систем с интенсивным вводом-выводом, которые, как правило, демонстрируют большое количество ожидающих чтений и записей в SHOW ENGINE INNODB STATUS выводе. Увеличение параллельной обработки при использовании родного AIO означает, что тип планировщика ввода-вывода или свойства контроллера массива дисков оказывают большее влияние на производительность ввода-вывода.

Потенциальным недостатком родного AIO для систем с интенсивным вводом-выводом является отсутствие контроля над количеством запросов записи ввода-вывода, передаваемых операционной системе одновременно. Слишком много запросов записи ввода-вывода, переданных операционной системе для параллельной обработки, в некоторых случаях может привести к голоданию чтений ввода-вывода, в зависимости от объема активности ввода-вывода и возможностей системы.

Если проблема с подсистемой асинхронного ввода-вывода в ОС препятствует запуску InnoDB, можно запустить сервер с параметром innodb_use_native_aio=0. Этот параметр также может быть автоматически отключен во время запуска, если InnoDB обнаружит потенциальную проблему, например, сочетание tmpdir расположения, tmpfs файловой системы и ядра Linux, которые не поддерживают асинхронный ввод-вывод на tmpfs.

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

Spec-Zone.ru

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