Управление логированием BLOB-данных

Функция

Запрещает/разрешает записывать в системный журнал BLOB-данные.

Спецификация
   
< управление логированием BLOB-данных >::=
SET SESSION BLOB LOG {ON|OFF}
Синтаксические правила
  1. Опция ON разрешает (значение по умолчанию), OFF – запрещает записывать в системный журнал BLOB-данные при выполнении транзакции в режиме EXCLUSIVE (PESSIMISTIC). В режиме AUTOCOMMIT данная конструкция игнорируется (полное логирование в системный журнал BLOB-данных всегда отключено).

Общие правила
  1. Команда действует на всё соединение (т. е. и на все каналы открытые в данном соединении).

  2. Команда не предназначена для работы с системой горячего резервирования.

  3. Если задан режим LOG ON, то все изменения BLOB-данных таблицы записываются в системный журнал и при фиксации транзакции (COMMIT) переносятся в соответствующие BLOB-файлы этой таблицы.

  4. Если задан режим LOG ON, то для обеспечения возможности «теплого рестарта» СУБД обработка BLOB-данных выполняется следующим образом:

    • добавляемые во время транзакции BLOB-данные записываются одновременно в BLOB-файлы таблицы и в системный журнал;

    • удаляемые BLOB-данные записываются в системный журнал только при подтверждении транзакции (т.е. после подачи команды COMMIT, когда они реально удаляются из BLOB-файлов).

  5. Если задан режим LOG OFF, то все изменения BLOB-данных (т.е. удаление/добавление страниц BLOB-файла) выполняются непосредственно в самих BLOB-файлах таблицы, а в системном журнале делается только отметка об удаленных (или добавленных) в BLOB-файле страницах. При фиксации транзакции (COMMIT) добавленные страницы принудительно сбрасываются в БД, а страницы, помеченные как «удаленные», реально удаляются из BLOB-файлов без сохранения BLOB-данных в системном журнале.

  6. При откате транзакции (ROLLBACK) «удаленные» страницы остаются в прежних BLOB-файлах, а добавленные очищаются тоже без сохранения BLOB-данных в журнале.

  7. Использование режима LOG OFF повышает производительность СУБД при выполнении транзакций с BLOB-данными, но при этом «теплый рестарт» не гарантирует откат незаконченного подтверждения (COMMIT) транзакции, содержащей удаление BLOB-данных (удаление будет продолжено). Физическая непротиворечивость БД гарантируется.