Новое в СУБД ЛИНТЕР 6.1

         

BLOB-данные


Ниже перечислены особенности работы с данными типа BLOB:

•  Добавление в BLOB.

•  Как и в предыдущих версиях СУБД ЛИНТЕР, добавление в BLOB осуществляется с помощью команд ABOJ, ABLB. Но если в предыдущих версиях вставка была “видна” конкурирующим транзакциям до фиксации транзакции, произведшей ее, то теперь вставка видна (транзакциям с режимами выше READ UNCOMMITTED) только после фиксации транзакции.

•  Очистка BLOB.

Как и в предыдущих версиях СУБД ЛИНТЕР, очистка BLOB осуществляется командами COBJ, CBLB при этом реальная очистка страниц BLOB происходит в момент фиксации транзакции. Но при наличии конкурирующей SERIALIZABLE транзакции фиксация транзакции не приводит с физической очистке страниц BLOB. Они только помечаются “к удалению”. После того, как все SERIALIZABLE транзакции, стартовавшие до операции очистки BLOB, завершатся, эти страницы могут быть переиспользованы для других BLOB.

Замечание 1: если две транзакции пытаются добавить в BLOB некоторые данные или очистить BLOB, то для одной из них такая попытка завершится ошибкой: ДАННЫЕ БЫЛИ МОДИФИЦИРОВАНЫ (ИЛИ УДАЛЕНЫ) КОНКУРИРУЮЩЕЙ ТРАНЗАКЦИЕЙ. Приостановки выполнения запроса до завершения конкурирующей транзакции не произойдет вне зависимости от текущего режима работы канала ( блокирующий / неблокирующий ).

Замечание 2: запрос на модификацию BLOB, поданный из SERIALIZABLE-транзакции, завершится ошибкой: НЕСЕРИЙНЫЙ ДОСТУП К ДАННЫМ (8102), если BLOB был модифицирован после начала этой транзакции.

Замечание 3: процесс очистки по возможности очищает страницы BLOB, помеченные “к удалению”.



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