为避免.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/