Классика баз данных - статьи


XDGL планировшик - часть 2


выполнить шаги, аналогичные предыдущему пункту.
  • Пусть opi - это операция D. Для каждого nj ? NP:
    1. если nj соответствует целевым узлам D, то установить на узел nj блокировку (XT, pj) и блокировку (IX, #t) на его предков;
    2. если nj соответствует дополнительным ветвям locpath (необходимым для указания предиката) операции D, то установить на узел nj блокировку (ST, pj) (либо (S, pj), если для проверки предиката не требуется атомизация узла) и блокировку (IS, #t) на его предков.

  • Пусть opi - это операция RN. Для каждого nj ? NP:
    1. если nj соответствует целевым узлам RN (переименовываемому узлу и новому узлу, полученному при переименовании), то установить на узел nj блокировку (X, pj) и блокировку (IX, #t) на его предков;
    2. если nj соответствует дополнительным ветвям locpath (необходимым для указания предиката) операции RN, то установить на узел nj блокировку (ST, pj) (либо (S, pj), если для проверки предиката не требуется атомизация узла) и блокировку (IS, #t) на его предков.

  • Для каждого nj ? PH установить блокировку (L, propertiesj).
  • Если opi расширяет схему, то установить блокировку (IN, propertiesi) для всех предков узла, расширяющего схему.
  • Если требуемую блокировку установить невозможно (она не совместима с уже установленной блокировкой), то блокировать выполнение операции a(opi, t) до тех пор, пока не будет освобождена конфликтующая блокировка.




    - Начало -  - Назад -  - Вперед -