DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Синтаксический анализ SQL: что происходит при нажиме на клавишу ENTER?

В случае, если пользователь или программа устанавливает соединение с эк­земпляром Oracle и выдает команды SQL или PL/SQL, процесс сервера присту­пает к работе по этим командам. Обработка операторов SQL разбивается на несколько фаз (в зависимости от того, является SQL оператором 

select или 

нет):
анализ (Parse), определение (Define), связывание (Bind), выполнение (Execute)
и выборка (Fetch). Все операторы проходят первые четыре фазы, но только оператор 

select 

должен возвращать строки обратно в процесс пользователя. Ни­же в таблице подводятся итоги того, что происходит на каждой из этих фаз.

Фаза        оператора SQL     Описание

Анализ
Процесс сервера проверяет синтаксис оператора     а также

выполняет разрешение объектов и проверки защиты для

выполнения SQL Затем он строит дерево разборки

и разрабатывает план выполнения оператора SQL
Определение
Наряду с другими действиями пользователь и процесс сервера

обмениваются информацией о типах данных, содержащихся в

столбцах, упоминающихся в операторах SQL В этом процессе

участвует SQL*Net или Net8/Net8i.
Связывание
Происходит разрешение значений переменных связи (:Ы, :v1),

на которые ссылается оператор SQL
Выполнение
Если необходимо, процесс сервера считывает в память блоки

данных из файла (только для операторов insert, update и delete)

и производит с ними манипуляции в памяти. Именно в этой

фазе происходит осуществление плана выполнения. Важно

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

делу блоков в буферный кэш базы данных, применение плана

выполнения и возврат строк в инициировавшее запрос

приложение (процесс пользователя).

В фазе анализа процесс сервера хеширует оператор на основании значения в коде ASCII каждого символа. Получающееся в результате значение транслирует­ся в адрес, соответствующий адресу размещения в библиотечном кэше в облас­ти коллективного пула. Если по хешированному адресу оператор не обнаруживается, то выполняются проверки оператора на корректность синтак­сиса, привилегии защиты для выполняющего его пользователя и разрешение объектов для всех ссылочных объектов в SQL.
Прибыв по хешированному адресу, серверный процесс проверяет, хранится ли здесь уже оператор, соответствующий поступившему на вход анализатора оператору. Если такой не обнаруживается, поступивший оператор будет подвер­гнут жесткой разборке... Это означает, что должно быть что-то называемое мяг­кой разборкой. Ну да, конечно, есть и такая. И приложения, которым приходится выполнять повторяющиеся жесткие разборки, дают нам возмож­ность смягчить удар. Это вовсе не каламбур. Мы поговорим об этом в следую­щем разделе.
Если по вычисленному хеш-адресу нет оператора SQL, процесс продолжает­ся, выполняет другие рекурсивные операторы SQL и разрабатывает для этого оператора дерево разборки и план выполнения. Дерево разборки на самом деле представляет собой реформатированный и структурированный в виде дерева оператор SQL. План выполнения получается из этого отображения и диктует наилучший (в большинстве случаев) метод выборки данных.
В фазе определения для разрешения типов данных между процессами поль­зователя и сервера привлекаются SQTfNet или Net8/Net8i. Это представляется важным, так как клиент (процесс пользователя) может работать в среде Win­dows NT (для которой естественной кодировкой является ASCII), а сервер, воз­можно, является мэйнфреймом IBM, на котором работает Oracle для MVS (с естественной кодировкой EBCDIC). Значит, типы данных long, short, word, do­uble и любые другие необходимо отобразить в естественную для обеих сторон среду. В этом и скрывается причина появления фазы определения.
В фазе связывания происходит разрешение значений переменных связи.
Применение переменных связи в операторах SQL прошло длинный путь "по­вторного использования SQL" и в то же время уменьшения конкуренции в обла­сти коллективного пула. Очень важно еще раз применить SQL. Добиться этого можно путем использования переменных связи.
Выполнение является стадией реального приложения плана выполнения, или отображения, к данным. Если оператор SQL - это оператор 

insert, update 

или 

delete, 

то будут модифицироваться данные. Для этих операторов должны свое­временно, т. е. до того, как данные модифицируются в памяти, генерироваться и регистрироваться релевантные элементы протокола (для восстановления эк­земпляра и базы данных) и элементы отката (для восстановления
Фаза выборки применима только к операторам 

select. 

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


транспортная логистика москва. . Бурение артезианских скважин: бурение скважин киев.







jAntivirus