HSQLDB - автоматически выполнять CHECKPOINT после удаления - PullRequest
0 голосов
/ 02 мая 2019

Чтобы избежать увеличения размера файла .lob Я понимаю , что необходимо выполнить CHECKPOINT после удаления строк в таблицах со столбцами больших объектов.

Я попытался автоматизировать это вследующие способы:

  • Просмотр документации, чтобы найти вариант, который делает это, но не может найти ни одного.Существует SET FILES LOG SIZE, но оно сильно отличается от того, что я хотел бы иметь.

  • Создание триггера наподобие этого:

    CREATE TRIGGER MY_TRIGGER AFTER DELETE ON MY_TABLE  
      BEGIN ATOMIC  
        CHECKPOINT;  
      END
    

    , но HSQLDB жалуется, что CHECKPOINT не является действительным токеном.

Есть предложения?

1 Ответ

1 голос
/ 02 мая 2019

HSQLDB не позволяет системным командам, таким как CHECKPOINT, в коде триггера.

Пространство для удаленных больших объектов освобождается на контрольной точке и используется повторно позже.

Вы можете выполнять контрольную точку чащеуменьшив настройки размера журнала.Минимальное значение 1 приводит к автоматической контрольной точке, когда размер журнала достигает 1 МБ.

SET FILES LOG SIZE 1

Поскольку 1 МБ зарегистрированных операторов DDL может привести к значительному увеличению размера файла .lobs,альтернатива - подсчитать выполненные операторы DELETE и выдать CHECKPOINT из вашего приложения, когда счет достигнет порогового значения.

...