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

       

B-деревья без журнализации


В некоторых системах баз данных при создании индексов используются специальные методы, препятствующие появлению содержимого нового индекса в журнале транзакции. Вместо этого журнализуются только изменения каталога и выделение страниц. Сбой в процессе создания индекса приводит к возврату этих страниц и подчистке информации о новом индексе в каталоге. Создание индекса заканчивается сбросом на диск всех заново выделенных и заполненных страниц и последующими операциями резервного копирования базы данных и даже журнала транзакций, удерживающего информацию об этих новых страницах. Последующие пользовательские транзакции журнализуют свои изменения в новом индексе обычным образом.

Эту идею можно расширить следующим образом. Если индекс является действительно избыточным, подобно традиционному кэшу, и если допустимо разрушение индекса в течение восстановления носителя данных или системы, то все операции над этим индексом могут не журнализоваться, т.е. журнализуется только распределение памяти. Это включает и пользовательские транзакции, выполняемые после завершения создания индекса. Откат пользовательской транзакции управляется виртуальными журнальными записями, подсоединенными к описателю транзакции в основной памяти, аналогично виртуальным журнальным записям, которые используются в других методах управления транзакциями [, ]. Детали этого метода в настоящее время не опубликованы, но для некоторых приложений этот метод кажется вполне обещающим, в частности, для временных кэшей и индексов, существующих только в основной памяти.



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