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

       

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


Одной из целей, которые ставили перед собой разработчики ARIES, являлось создание алгоритма, поддерживающего блокировки небольших объектов БД (таких как кортеж). Как уже упоминалось, этим свойством обладали некоторые дореляционные системы. Однако основным их недостатком являлось то, что блокировки происходили на физическом низком уровне. В ARIES же блокировки вообще и блокировки кортежей в частности предлагается реализовывать на логическом уровне. Это означает, что при блокировке (например) кортежа блокируется не область памяти, а некоторый идентификатор, который может выглядеть как (page#, slot#), где page# адресует некоторую страницу базы данных, а slot# определяет место на странице, которое в свою очередь указывает на сам кортеж.

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

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

Обычно каждый файл, содержащий кортежи одного или нескольких отношений, содержит также несколько страниц с такой информацией. Мы будем называть эти страницы страницами учета свободной памяти (free space inventory pages - FSIP). Каждая такая страница содержит информацию, касающуюся многих страниц данных или индексов. При вставке кортежа FSIP используются для того, чтобы определить станицу данных, в которой для этого достаточно места. FSIP содержат лишь приблизительную информацию о размере свободной памяти в странице (типа того, что в странице занято не меньше чем 30% места, 40% места и т.д.).

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