7.5.12.1 Дисковый ввод/вывод
В операциях дискового ввода/вывода для таблиц InnoDB используется
асинхронный ввод/вывод. В Windows NT применяется собственный асинхронный
ввод/вывод, обеспечиваемый операционной системой, а в Unix - эмуляция
асинхронного ввода/вывода, встроенная в InnoDB (InnoDB создает
определенное количество потоков ввода/вывода, чтобы обеспечить операции
ввода/вывода, такие как опережающее считывание). В будущей версии мы
добавим поддержку эмуляции асинхронного ввода/вывода в Windows NT и
собственного асинхронного ввода/вывода в тех версиях Unix, в которых он
есть.
В Windows NT для таблиц InnoDB используется ввод/вывод без буферизации.
Это означает, что страницы на диске, которые записывает или считывает
InnoDB, не заносятся в файловый кэш операционной системы. При этом
экономится некоторое количество памяти.
Начиная с версии 3.23.41 в InnoDB используется новая техника сбрасывания
файлов на диск, которая получила название двойной записи. Она обеспечивает
большую безопасность при восстановлении после сбоев (таких как, например,
зависание операционной системы или отключение питания) и повышение
производительности на большинстве версий Unix, так как снижается
необходимость в операциях fsync.
``Двойная запись'' означает, что InnoDB перед записью страниц в файл данных
сначала записывает их в смежный участок табличной области, который
называется буфером двойной записи. Запись страниц в предназначенные для
них места файла данных осуществляется только после завершения записи и
сброса буфера двойной записи на диск. В случае сбоя системы во время
записи страницы InnoDB во время восстановления найдет в буфере двойной
записи пригодную копию страницы.
Начиная с версии 3.23.41 в качестве файла данных можно также использовать
раздел реального диска, хотя тестирование этой возможности еще не
проводилось. При создании нового файла данных в innodb_data_file_path
сразу после размера файла данных необходимо ввести ключевое слово newraw.
Раздел диска должен быть больше указанного размера или равен ему. Обратите
внимание: 1 Мб в InnoDB -это 1024 x 1024 байт, тогда как в
характеристиках диска 1 Мб обычно соответствует 1000 000 байт.
innodb_data_file_path=hdd1:5Gnewraw;hdd2:2Gnewraw
При новом запуске базы данных Вы должны изменить ключевое слово на raw
. В
противном случае InnoDB перезапишет ваш раздел!
innodb_data_file_path=hdd1:5Graw;hdd2:2Graw
Используя реальный диск, в некоторых версиях Unix можно производить
небуферизованные операции ввода/вывода.
В InnoDB существует два эвристических метода опережающего считывания:
последовательное опережающее считывание и случайное опережающее
считывание. Метод последовательного опережающего считывания
предусматривает, что InnoDB, определив, что схема доступа к сегменту в
табличной области является последовательной, будет заранее направлять
системе ввода/вывода пакет считываний страниц базы данных. Метод
случайного опережающего считывания предполагает, что InnoDB, определив,
что некоторые части табличной области полностью считываются в буферный
пул, направляет оставшиеся считывания системе ввода/вывода.