Разделяемый Пул

Рубрика: Архитектура БД Oracle

  • Является частью SGA

  • Содержит:

    • Библиотечный кэш

    • Разделяемую область SQL

    • Кэш словаря данных

    • Управляющие структуры

Разделяемый Пул

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

Словарь данных - набор таблиц и представлений базы данных, содержащих справочную информацию о базе данных, ее структурах и ее пользователях. База данных Oracle часто обращается к словарю данных во время парсинга SQL предложений. Эти обращения играют важную роль для работы Базы данных Oracle.

База данных Oracle так часто обращается к словарю данных, что в памяти выделены две специальных области, чтобы содержать данные словаря. Одну область называют кэшем словаря данных, также известным как строковый кэш, потому что он содержит данные в виде строк вместо буферов (которые содержат блоки данных целиком). Другой областью в памяти, содержащей данные словаря, является библиотечный кэш. Все пользовательские процессы Базы данных Oracle совместно используют эти два кэша для доступа к информации о словаре данных.

База данных Oracle представляет каждый SQL-оператор, который она выполняет, разделяемой области SQL (так же как и частной области SQL, хранимой в PGA). База данных Oracle распознает, когда два пользователя выполняют одно и то же предложение SQL, и повторно использует разделяемую область SQL для этих пользователей.

Разделяемая область SQL содержит дерево синтаксического разбора и план выполнения для данного SQL-оператора. База данных Oracle экономит память, используя одну разделяемую область SQL для SQL-операторов, выполняемых многократно, что часто происходит, когда множество пользователей работают в одном и том же приложении.

При разборе нового SQL-оператора, База данных Oracle выделяет память в разделяемом пуле, чтобы сохранить его в разделяемой области SQL. Размер этой памяти зависит от сложности оператора.

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

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

Кэш результатов SQL-запросов и кэш результатов функций PL/SQL являются нововведениями Базы данных Oracle 11g. Они совместно используют ту же самую инфраструктуру, отображаются в одних и тех же динамических представлениях производительности (V$), и администрируются посредством одного и того же пакета.

Результаты запросов и фрагментов запроса могут кэшироваться в памяти в кэше результатов SQL-запросов. База данных может затем использовать кэшируемые результаты, чтобы предоставить результаты для будущих выполнений этих запросов и фрагментов запроса. Поскольку получение результатов из кэша результатов SQL-запросов происходит быстрее, чем повторный запуск запроса, зачастую выполняемые запросы получают значительное повышение производительности, когда их результаты кэшируются.

Функция PL/SQL иногда используется, чтобы возвратить результат вычисления, входными параметрами которого являются один или несколько параметризированных запросов, выполняемых функцией. В некоторых случаях, эти запросы обращаются к данным, которые изменяются очень редко по сравнению с частотой вызовов функции. Можно включить соответствующую синтаксисческую конструкцию в исходный текст функции PL/SQL, чтобы ее результаты кэшировались в кэше результатов функций PL/SQL и (для гарантии корректности), чтобы кэш очищался, когда таблицы в списке таблиц испытывают DML.

Фиксированная область разделяемого пула представляет издержки запуска для SGA. Она очень мала по сравнению с типичным размером разделяемого пула или SGA.

Далее: Подготовка Операционной системы

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

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

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

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