Рисунки

             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 Типы секций и вызовов.

Назад | Содержание