В операциях дискового ввода/вывода для таблиц 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, определив, что некоторые части табличной области полностью считываются в буферный пул, направляет оставшиеся считывания системе ввода/вывода.