Инструкции по настройке памяти для Кэша Библиотеки

Рубрика: Управление Памятью

Установите соглашения форматирования для разработчиков так, чтобы SQL-операторы соответствовали в кэше.

Используйте переменные привязки.

Устраните ненужные дублированные SQL.

Рассмотреть использование CURSOR_SHARING.

Используйте PL/SQL когда возможно.

Кэшируйте номера последовательности.

Закрепите объекты в кэше библиотеки.

Кэш библиотеки, который является частью разделяемого пула, является местом, где база данных Oracle хранит весь код SQL, код Java, PL/SQL процедуры и пакеты, и управляющие структуры, такие как блокировки и дескрипторы кэша библиотеки. Код входит в это центральное расположение так, чтобы он мог быть совместно использован среди всех пользователей. Преимущество совместного использования - в том, что все пользователи могут использовать в своих интересах любую работу, которая уже сделана со стороны SQL. Поэтому, задачи, такие как парсинг операторов и определение путей доступа к данным (также известных как "план выполнения”) делаются только однажды для оператора, независимо от того, сколько раз оператор выполняется, и независимо от того, сколько пользователей выполняет его. Кэш библиотеки, который является слишком маленьким, не имеет пространства для всех выполняемых операторов и, поэтому, невозможно использовать с пользой это совместное использование работы для некоторых операторов. Кэш библиотеки, который является слишком большим, вызывает лишнюю нагрузку на систему уже из-за того, что приходится управлять его содержимым.

Кэш библиотеки может дойти до того, что будет заполнен тем, что, кажется различными операторами, когда, фактически, они - копии того же самого оператора. Частой причиной этого является несколько отличающееся форматирование для каждого оператора. Соответствия нет, если строки не совпадают в точности. Другой причиной является использование констант вместо переменных привязки. Если единственной разницей между двумя операторами являются значения констант, то в большинстве случаев каждое из выполнений этих операторов и система в целом извлекли бы выгоду из замены этих констант переменными привязки.

Параметр инициализации CURSOR_SHARING может быть установлен, чтобы заставить систему автоматически заменять константы переменными привязки, когда в остальном операторы соответствуют. Обычно следует использовать в своих интересах эту установку как временную меру, пока приложение не будет исправлено, чтобы использовать переменные привязки, где необходимо. Как и со всеми этими советами, у использования этой переменной могут быть другие побочные эффекты, которые следует исследовать.

Вместо того, чтобы запускать тот же самый SQL-оператор из нескольких различных мест в приложении, поместите оператор или операторы в хранимую процедуру при использовании PL/SQL. Затем только вызывайте процедуру. Это гарантирует, что SQL-оператор будет совместно использоваться, потому что он существует только в одном расположении. Кроме того, SQL уже проанализирован и имеет план выполнения, потому что он находится в уже скомпилированной хранимой процедуре.

Номера последовательности могут кэшироваться. Поэтому, если есть несколько последовательностей с высокой активностью, определите хорошую настройку для размера кэша и используйте ее в своих интересах.

Можно использовать пакет DBMS_SHARED_POOL, чтобы закрепить объекты в кэше библиотеки. Это уменьшает шанс перезагрузки и перекомпиляции объектов. Обратитесь к документу PL/SQL Packages and Types Reference для получения дополнительной информации о том, как использовать этот пакет.

Далее: Поиск и устранение неисправностей и Представления Настройки

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)