HSQLDB-删除后自动执行CHECKPOINT

时间:2019-05-02 01:48:14

标签: java sql hsqldb rdbms

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

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

  • 在文档中查找可以执行此操作但找不到任何选项的选项。有SET FILES LOG SIZE,但与我想要的完全不同。

  • 创建这样的触发器:

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

已删除的LOB的空间已在检查点释放,以后可以重新使用。

可以通过减少日志大小设置来更频繁地执行检查点。最小设置1(当日志大小达到1 MB时会导致自动检查点)。

SET FILES LOG SIZE 1

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