Расширения файловой системы Unix

Оценить
(0 голоса)

Широкое развертывание файлов баз данных в UFS (Unix File System - файловой системе Unix) привело к возникновению проблем с производительностью. Кэш страницы файловой системы Solaris добавляет еще один уровень кэширования поверх буферного кэша базы данных, что часто отрицательно сказывается на производительности особенно больших пакетных заданий, когда кэширование сулит только небольшие преимущества или вообще отсутствие таковых. Размещение файлов базы данных на низкоуровневых устройствах почти всегда дает лучший, а иногда значительно лучший результат с точки зрения производительности, чем размещение их в файлах UFS.

Чтобы устранять узкое место кэша, новая функциональная возможность, известная под названием Direct I/O (прямой ввод/вывод), была введена в Solaris 2.6. Прямой ввод/вывод позволяет файлам использоваться обычным способом в качестве файлов базы данных, при этом страничный кэш файловой системы Solaris будет обойден. Без прямого ввода/вывода приложение считывает блок файла в кэш файловой системы Solaris, а затем считывает его в разделяемый буфер базы данных, так что блок существует в двух местах. В случае прямого ввода/вывода блок считывается непосредственно в кэш базы данных без прохождения через обычный кэш файловой системы. Приложение может с помощью системного вызова directio(3C) программным путем разрешать прямой ввод/вывод для конкретных файлов, либо администратор может принудительно включить эту функциональную возможность для всей файловой системы, смонтировав ее с опцией forcedirectio.

Обратите внимание на то, что прямой ввод/вывод не будет обходить страничный кэш файловой системы, если операция чтения или записи не выравнена по 512-байтовым секторам или файлы имеют дыры. Ни одна из этих ситуаций, вероятно, не будет иметь места с базами данных.

Прямой ввод/вывод также затрагивает размер блоков операций чтения и записи. Поскольку СУБД обычно открывают файлы с использованием флага 0_SYNC (или флага 0_DSYNC), то обычное поведение UFS для файлов базы данных заключается в выполнении операций чтения и записи блоками размером по 8 Кбайт. Это означает, например, что чтение из базы данных размером 2 Кбайт приводит к операции ввода/ вывода с блоком длиной 8 Кбайт, а при попытке записать 32 Кбайт производится разбивка на четыре блока по 8 Кбайт. Такое поведение может негативно воздействовать на производительность занесения записей в журнал, поскольку данные о завершении транзакции часто агрегируются СУБД для обеспечения единственной большой записи в журнал. Прямой ввод/вывод освобождает блоки ввода/вывода как операций чтения, так записи от ограничения в 8 Кбайт, налагаемого файловой системой UFS.

Подробнее в этой категории: « Программа Ambassador Прямой ввод/вывод »
Прямой ввод/вывод
Другие оптимизации ввода/вывода
Поддержка больших файлов
Другие оптимизации
Единообразно объявленная память совместного использования

Добавить комментарий


Защитный код
Обновить