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

чтение и удаление узлов-братьев)


Предположим, что транзакция T1 намерена прочитать все элементы name, выбираемые путевым выражением /doc/person/name. В это же время транзакция T2 хочет удалить все элементы hobby, определяемые путем доступа: /doc/person/hobby: Delete(/doc/person/hobby). Очевидно, что логического конфликта между транзакциями нет, поскольку удаление узлов второй транзакцией не влияет на результат первой. Таким образом, транзакции T1 и T2, вообще говоря, могут выполняться одновременно. На рис. 5 мы показываем, что протокол XDGL действительно позволяет выполнять транзакции T1 и T2 одновременно, поскольку между блокировками, необходимыми для выполнения T1 и T2, нет конфликтов.

Рис. 5.Блокировки на схеме для примера 2



Содержание раздела