为避免.lob文件增长I understand,必须在删除具有LOB列的表中的行后执行CHECKPOINT
。
我尝试通过以下方式自动执行此操作:
在文档中查找可以执行此操作但找不到任何选项的选项。有SET FILES LOG SIZE
,但与我想要的完全不同。
创建这样的触发器:
CREATE TRIGGER MY_TRIGGER AFTER DELETE ON MY_TABLE
BEGIN ATOMIC
CHECKPOINT;
END
但是HSQLDB抱怨CHECKPOINT
不是有效的令牌。
有什么建议吗?
答案 0 :(得分:1)
HSQLDB不允许在触发代码中使用诸如CHECKPOINT之类的系统命令。
已删除的LOB的空间已在检查点释放,以后可以重新使用。
可以通过减少日志大小设置来更频繁地执行检查点。最小设置1(当日志大小达到1 MB时会导致自动检查点)。
SET FILES LOG SIZE 1
由于1 MB的已记录DDL语句可能导致.lobs文件的大小大幅增加,因此,替代方法是对已执行的DELETE语句进行计数,并在计数达到阈值时从您的应用中发出CHECKPOINT。>