为避免.lob文件增大I understand,必须在删除具有LOB列的表中的行后执行CHECKPOINT

我尝试通过以下方式自动执行此操作:


在文档中查找可以执行此操作但找不到任何选项的选项。有SET FILES LOG SIZE,但是与我想要的完全不同。
创建这样的触发器:

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


但是HSQLDB抱怨CHECKPOINT不是有效的令牌。


有什么建议么?

最佳答案

HSQLDB不允许在触发代码中使用诸如CHECKPOINT之类的系统命令。

删除的LOB的空间在检查点处释放,以后再用。

您可以通过减少日志大小设置来更频繁地执行检查点。最小设置1将在日志大小达到1 MB时产生一个自动检查点。

SET FILES LOG SIZE 1


由于1 MB的已记录DDL语句可能会导致.lobs文件的大小大幅增加,因此,替代方法是对已执行的DELETE语句进行计数,并在计数达到阈值时从应用程序中发出CHECKPOINT。

关于java - HSQLDB-删除后自动执行CHECKPOINT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55944703/

10-11 03:41