tid = <N, i>
--T------------------¬
i ¦ ¦Область описателей¦
¦ ¦ ¦
L-+------------------+
¦ i-тый описатель +-¬
+------------------+ ¦
+------------------+ ¦
¦ ¦ ¦
¦ ¦ ¦
+------------------+ ¦
¦ i-тый кортеж +--
+------------------+
L-------------------
Cтраница номер N
Рис.1 Переход от tid'а кортежа к кортежу без косвенности.
tid = <N, i>
--T------------------¬ --T------------------¬
i¦ ¦Область описателей¦ j ¦ ¦Область описателей¦
¦ ¦ ¦ ¦ ¦ ¦
L-+------------------+ ¦ ¦ ¦
¦ i-тый описатель +- - - ¬ ¦ +------------------+
¦ (tid = <M, j>) ¦ L-+ j-тый описатель +-¬
+------------------+ ¦ +------------------+ ¦
+------------------+ +------------------+ ¦
¦ ¦ ¦ ¦ ¦ ¦
¦ ¦ L - - - ¦ ¦ ¦
¦ ¦ +------------------+ ¦
¦ ¦ ¦ j-тый кортеж +--
¦ ¦ +------------------+
L------------------- L-------------------
Cтраница номер N Cтраница номер M
Рис.2 Переход от tid'а кортежа к кортежу с косвенностью.
------T-----T-----T-----T-----¬
¦ X ¦ S ¦ IX ¦ IS ¦ SIX ¦
------+-----+-----+-----+-----+-----+
¦ X ¦ нет ¦ нет ¦ нет ¦ нет ¦ нет ¦
+-----+-----+-----+-----+-----+-----+
¦ S ¦ нет ¦ да ¦ нет ¦ да ¦ нет ¦
+-----+-----+-----+-----+-----+-----+
¦ IX ¦ нет ¦ нет ¦ да ¦ да ¦ нет ¦
+-----+-----+-----+-----+-----+-----+
¦ IS ¦ нет ¦ да ¦ да ¦ да ¦ да ¦
+-----+-----+-----+-----+-----+-----+
¦ SIX ¦ нет ¦ нет ¦ нет ¦ да ¦ нет ¦
L-----+-----+-----+-----+-----+------
Рис. 3. Таблица совместимости захватов.
Время -----------------------------------------------
Т
р Т1 +-------+ ¦ ¦
а ¦ ¦
н Т2 +-------+---------+ ¦
з ¦ ¦
а Т3 +----+-----------------------+
к ¦ ¦
ц Т4 ¦ +-------------+ ¦
и ¦ ¦
и Т5 ¦ +-------------+
Контрольная точка Мягкий сбой
(момент tc) (момент tf)
Рис.4 Категории транзакций при мягком сбое.
Тип Тип ¦ Грам. ¦ Оптим. ¦ Ген. ¦ Выполнение
предложения секции разбор кода
¦ -------+--------+-----¬¦ ---------¬
Запрос на COMPILESECT ¦ В р е м я ¦ ¦ Время ¦
выборку, ¦ ¦ ¦¦ ¦ ¦
вставка, ¦ прекомпиляции ¦ ¦выполне-¦
удаление, ¦ ¦ ¦¦ ¦ния ¦
модификация L---------------------- L---------
¦ ------¬¦ ¦ ¦ ---------¬
Создание INTERSECT ¦Время¦ ¦ Время ¦
отношения, ¦ ¦пре- ¦¦ ¦ ¦ ¦ ¦
начало ¦компи¦ ¦выполне-¦
транзакции ¦ ¦ляци覦 ¦ ¦ ¦ния ¦
и т.д. L------ L---------
¦ ------¬¦ -------+------+----------¬
Операции PARSEDSECT ¦Время¦ ¦ В р е м я ¦
над времен- ¦ ¦пре- ¦¦ ¦ ¦
ными (не ¦компи¦ ¦ ¦
существую- ¦ ¦ляци覦 ¦ в ы п о л н е н и я ¦
щими во ¦ ¦ ¦ ¦
время пре- ¦ ¦ ¦¦ ¦ ¦
компиляции) ¦ ¦ ¦ ¦
отношениями ¦ L------¦ L------T------T-----------
Предложение INDEFSECT ¦ -------+--------+------+----------¬
динамичес- ¦ В р е м я ¦
кой компи- ¦ ¦ ¦
ляции ¦ в ы п о л н е н и я ¦
(PREPARE и ¦ ¦ ¦
EXECUTE) L----------------------------------
¦ ¦ ¦ ¦
Рис.5 Выполнения фаз обработки для разных типов запросов.
Compilesect Intersect Parsesect Indefsect
------------T------------T-----------T-----------T-----------¬
Auxcall ¦Выполняется ¦Выполняется¦Динамически¦ Не исполь-¦
¦программа в ¦стандартная¦вызываются ¦ зуется ¦
¦машинных ко-¦программа ¦оптимизатор¦ ¦
¦дах, содер- ¦под управ- ¦и генератор¦ ¦
¦жащаяся в ¦лением со- ¦кодов для ¦ ¦
¦секции ¦держимого ¦преобразо- ¦ ¦
¦ ¦секции ¦вания сек- ¦ ¦
¦ ¦ ¦ции в Com- ¦ ¦
¦ ¦ ¦pilesect ¦ ¦
¦ ¦ ¦или Inter- ¦ ¦
¦ ¦ ¦sect, затем¦ ¦
¦ ¦ ¦выполняется¦ ¦
¦ ¦ ¦(преобразо-¦ ¦
¦ ¦ ¦вания про- ¦ ¦
¦ ¦ ¦изводятся ¦ ¦
¦ ¦ ¦только в ¦ ¦
¦ ¦ ¦виртуальной¦ ¦
¦ ¦ ¦памяти) ¦ ¦
------------+------------+-----------+-----------+-----------+
Opencall ¦Программа в ¦Не исполь- ¦Не исполь- ¦Не исполь- ¦
¦машинных ко-¦зуется ¦зуется ¦зуется ¦
¦дах, содер- ¦ ¦ ¦ ¦
¦жащаяся в ¦ ¦ ¦ ¦
¦секции, вы- ¦ ¦ ¦ ¦
¦полняется с ¦ ¦ ¦ ¦
¦кодом опера-¦ ¦ ¦ ¦
¦ции OPEN ¦ ¦ ¦ ¦
------------+------------+-----------+-----------+-----------+
Fetchcall ¦Программа в ¦Не исполь- ¦Не исполь- ¦Не исполь- ¦
¦машинных ко-¦зуется ¦зуется ¦зуется ¦
¦дах, содер- ¦ ¦ ¦ ¦
¦жащаяся в ¦ ¦ ¦ ¦
¦секции, вы- ¦ ¦ ¦ ¦
¦полняется с ¦ ¦ ¦ ¦
¦кодом опера-¦ ¦ ¦ ¦
¦ции FETCH ¦ ¦ ¦ ¦
------------+------------+-----------+-----------+-----------+
Closecall ¦Программа в ¦Не исполь- ¦Не исполь- ¦Не исполь- ¦
¦машинных ко-¦зуется ¦зуется ¦зуется ¦
¦дах, содер- ¦ ¦ ¦ ¦
¦жащаяся в ¦ ¦ ¦ ¦
¦секции, вы- ¦ ¦ ¦ ¦
¦полняется с ¦ ¦ ¦ ¦
¦кодом опера-¦ ¦ ¦ ¦
¦ции CLOSE ¦ ¦ ¦ ¦
------------+------------+-----------+-----------+------------
------------T------------------------T-----------T-----------¬
Setupcall ¦Текущее состояние секции¦Не исполь- ¦Вызываются ¦
¦уничтожается, вызываются¦зуется ¦граммати- ¦
¦грамматический анализа- ¦ ¦ческий ана-¦
¦тор, оптимизатор и гене-¦ ¦лизатор, ¦
¦ратор кодов для построе-¦ ¦оптимизатор¦
¦ния новой секции (Com- ¦ ¦и генератор¦
¦pilesect или Intersect) ¦ ¦кодов для ¦
¦по новому предложению ¦ ¦построения ¦
¦SQL ¦ ¦секции ¦
¦ ¦ ¦(Compile- ¦
¦ ¦ ¦sect или ¦
¦ ¦ ¦Intersect) ¦
¦ ¦ ¦для указан-¦
¦ ¦ ¦ного пред- ¦
¦ ¦ ¦ложения SQL¦
------------+------------T-----------+-----------+-----------+
Describecall¦Вырабатыва- ¦Не исполь- ¦Не исполь- ¦Не исполь- ¦
¦ется описа- ¦зуется ¦зуется ¦зуется ¦
¦тель резуль-¦ ¦ ¦ ¦
¦тирующего ¦ ¦ ¦ ¦
¦отношения ¦ ¦ ¦ ¦
------------+------------+-----------+-----------+------------
Рис. 6 Типы секций и вызовов.
Назад | Содержание