Библиотечный кэш (library cache) в базе данных Oracle хранит информацию о последних выполненных операторах SQL и PL/SQL. Он выполняет ряд очень важных функций.
Назначение библиотечного кэша
- дает возможность совместно использовать общие команды;
- сопровождается на основе алгоритма отбора давно не использовавшихся данных (LRU);
- состоит из двух структур:
- разделяемая SQL-область;
- разделяемая PL/SQL-область;
- занимает память, размер которой зависит от величины разделяемого пула.
Размер library cache
Размер библиотечного кэша основывается на величине разделяемого пула. Память выделяется на этапе синтаксического разбора или при вызове программной единицы. Если разделяемый пул слишком мал, команды постоянно перегружаются в библиотечный кэш, снижая производительность. Управление библиотечным кэшем производится на основе алгоритма отбора давно не использовавшихся данных (LRU).
Когда в библиотечном кэше нет свободного места для новых записей, из него удаляются планы выполнения и деревья разбора давно не использовавшихся команд. Если операторы SQL и PL/SQL повторно не используются, они со временем удаляются из библиотечного кэша.
Состав библиотечного кэша
Библиотечный кэш состоит из двух структур:
- Разделяемая SQL-обласггь (shared SQL) - в ней хранятся и совместно используются планы выполнения и деревья разбора обрабатываемых в базе данных команд SQL. При повторном выполнении одинаковой команды SQL используется хранимая информация синтаксического разбора. Чтобы гарантировать совместное использование команды необходимо, чтобы текст, схема и связанные переменные для новой команды и хранимой команды совпадали.
- Разделяемая PL/SQL-область (shared PL/SQL) - содержит доступные для совместного использования операторы PL/SQL. В ней хранятся синтаксически разобранные и откомпилированные недавно выполнявшиеся программные единицы (процедуры, функции, пакеты и триггеры).