Альтернативный буферный пул в СУБД OpenEdge (Progress)
Альтернативный буферный пул
в
СУБД OpenEdge (Progress)
(Пособие для начинающих)
Материал предназначен для версии Progress OpenEdge 10.2B и выше.
Все права сохранены. Автор оставляет за собой право на редактирование и распространение этого материала, а так же прочие права в соответствии с законом РФ «Об авторских и смежных правах».
© 2009 г. Башкатов В.Г.
Редактор: Мазина Ю.А.
Введение
В Progress OpenEdge 10.2B был введен новый механизм, который называется Альтернативный буферный пул, который доступен для лицензии OpenEdge Enterprise RDBMS.
В некоторых случаях, из-за низкого показателя совпадений при поиске блоков данных в буферном пуле, обычный буферный пул становится узким местом, что негативно влияет на производительность системы в целом. Традиционным методом исправления ситуации являлось увеличение размера буферного пула через увеличение значения параметра запуска базы данных <-B> (Buffer Pool), к сожалению, это не всегда возможно.
Альтернативный буферный пул – это набор буферов в разделяемой памяти, которые логически отделены от первичного буферного пула. Настраивая конкретные области хранения или объекты базы данных для использования Альтернативного буферного пула можно улучшить производительность системы. Это обусловлено тем, что снижается количество операций чтения/записи на диск за счет нахождения в памяти наиболее часто используемых блоков и данных.
Альтернативный буферный пул предоставляет администратору базы данных возможность управлять общим буферным пулом. Размер Альтернативного буферного пула устанавливается параметром запуска базы данных <-B2>. Как и первичный буферный пул альтернативный использует разделяемую память, а суммарный размер этих двух буферов ограничен максимально возможным размером этой памяти.
Управление Альтернативным буферным пулом происходит отдельно от первичного буферного пула. Пока альтернативный буферный пул еще не полностью использован, применяется механизм очереди FIFO. При задействовании всех буферов начинает работать механизм LRU, выбирающий соответствующие буферы для выселения из памяти. Первый выселяемый буфер будет тот, который находится в начале очереди FIFO. Тем не менее, цель использования Альтернативного буферного пула заключается в установке такого размера, при котором использование механизма LRU не требуется. Поэтому для мониторинга работы механизма LRU используется утилита PROMON. При обнаружении активности механизма LRU, администратор базы данных может увеличить размер Альтернативного буферного пула с помощью утилиты PROUTIL INCREASETO. Или может исключить некоторые объекты из Альтернативного буферного пула. В любом случае, при выполнении одного из указанных действий количество свободных буферов в Альтернативном пуле увеличивается, и механизм LRU будет автоматически деактивирован.
Если тип буферного пула для объектов будет изменен в online, то все существующие буферы останутся в том буферном пуле, в котором они были изначально размещены. При задействовании
Частные буферы, параметр клиентской сессии <-Bp> будут всегда размещаться в первичном буферном пуле, независимо от того, какой пул использует объект.
Области базы данных Control и Recovery не могут использовать Альтернативный буферный пул.
Если размер Альтернативного буферного пула не будет указан во время запуска базы данных, то все объекты и области будут использовать буферы из первичного буферного пула.
Объекты, которые будут использовать Альтернативный буферный пул, лучше выбирать исходя из специфики конкретного приложения. Наилучшими кандидатами для этого могут стать наиболее активные таблицы и их индексы, а так же таблицы и индексы, которые шифруются. Это связано с тем, что шифрование и дешифрование во время чтения блоков с диска и их записи на диск, ухудшают производительность. Если же такие блоки будут всегда находиться в памяти в Альтернативном буферном пуле, то производительность может быть улучшена.