java - HSQLDB - DELETE后自动执行CHECKPOINT

标签 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 不是有效的 token 。

有什么建议吗?

最佳答案

HSQLDB 不允许在触发代码中使用 CHECKPOINT 等系统命令。

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

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

SET FILES LOG SIZE 1

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

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

相关文章:

Java 8 : How does `QUICKSORT_THRESHOLD=286` comes from?

java - 在Android Intent中传递任意对象

mysql - 从数据库中获取每个类别的一个结果

java.lang.IllegalStateException : Failed to load ApplicationContext when running unit test with HSQL embedded database

java - 如何从数组中选择一个值?

php - 从 PHP 中加载 sql 文件

php - 获取非重复记录的最大值

spring - Postgres v. HSQL ConstrainViolationException Wrapping in Spring

mysql - 如何以兼容的方式定义日期间隔?

java - JLabel 上的动态 Swing 刷新