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



         

Блокировки кортежей и распределение памяти - часть 2


Поэтому совсем не каждое действие над базой данных по внесению или удалению какой-либо информации требует изменения FSIP. Для ускорения процесса восстановления все изменения FSIP должны журнализоваться.

Но эти журнальные записи должны обладать тем свойством, что их нельзя откатить. Это объясняется тем фактом, что при откате транзакции, действия по изменению FSIP не всегда будут обратными по отношению к тем, что были произведены при прямом ее выполнении.

Пример работы с FSIP

На рисунке приведен пример такой ситуации. Предположим, что страницы FSIP содержат информацию с точностью до 25%. То есть каждая страница может быть описана во FSIP как содержащая 0% данных, не менее 25%, 75% или 100%. Пусть некоторая страница содержала 42% данных. Тогда во FSIP она описывалась как страница, в которой занято не менее 25% места. После действия, обозначенного на рисунке жирной цифрой 1, в страницу добавили еще 10% данных (относительно ее размера). Запись FSIP изменилась на 50%. После этого некоторая другая транзакция добавила в эту страницу еще 20% информации и завершилась. Итого, в странице после этого было занято 72% ее объема. Если после этого происходит сбой, то мы должны будем откатить первую транзакцию. Понятно, что после этого в странице будет занято 62%, что больше 50%. Таким образом, нельзя откатывать действия 1-й транзакции по изменению FSIP.




Содержание  Назад  Вперед