Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Обработка команд SQL в Oracle




Использование компонентов сервера зависит от типа команд SQL:

- запрос, возвращающий строки;

- оператор DML, изменяющий данные;

- фиксация, обеспечивающая восстановление транзакции.

Запросы в отличие от других команд SQL возвращают строки данных, а не только информацию об успешном выполнении или ошибке. Основными этапами обработки запроса являются разбор, выполнение и выборка.

Разбор предполагает поиск одинаковой команды в разделяемом пуле, проверку синтаксиса, блокирование объектов, используемых во время разбора, и, наконец, создание и сохранение плана выполнения запроса в разделяемый пул.. Разделяемый пул состоит из библиотечного кеша и кеша словаря. Текст команды, дерево разбора (откомпилированная версия команды) и оптимальный план выполнения содержатся в библиотечном кеше.

Если в результате выполнения других команд SQL данная информация не была вытеснена из библиотечного кеша, то при использовании этого же запроса не нужно снова делать разбор данной команды. Таким образом, библиотечный кеш позволяет улучшать производительность приложений.

Этап выполнения предполагает идентификацию выбираемых строк, а этап выборки - возврат строк пользовательскому процессу в один приём или порциями в зависимости от объёма возвращаемых данных.

Другая часть разделяемого пула – кеш словаря данных – хранит самую последнюю информацию для определения имен объектов, указанных в команде SQL и оценки привилегий доступа.

Размер разделяемого пула устанавливается в соответствующем параметре инициализации.

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

Все необходимые сортировки перед обработкой и возвратом строк пользователю, сохранение информации о сеансе пользователя и другая связанная с конкретным пользовательским процессом информация хранится в программной глобальной области (Programm Global Area - PGA). PGA выделяется при создании процесса и освобождается при его удалении.

При обработке оператора DML, изменяющего данные, предполагается наличие двух этапов: разбор, похожий на этап разбора, который используется при обработке запроса, и выполнение.

Например, при выполнении пользователем команды обновления серверный процесс совершает следующие действия, показанные на рис. 4.8.4:

- считывает данные и блоки отката из файлов данных, если их ещё нет в кеше буферов;

- блокирует данные;

- записывает в журнальном буфере предстоящие изменения в сегменте отката (исходный образ) и в данных (новое значение);

- записывает исходный образ в блок отката и обновляет блок данных.

При этом оба измененных блока в кеше буферов помечаются как модифицированные буферы, то есть их данные отличаются от соответствующих данных на диске.

 

 

Рис. 4.8.4. Обработка оператора DML, изменяющего данные.

 

Обработка команд DELETE или INSERT выполняется похожим образом. Исходный образ при удалении содержит значения столбцов удаленной строки, тогда как для вставки требуется лишь информация о расположении строки, которая сохраняется в сегменте отката.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных