HSQLDB - DELETE 后自动执行 CHECKPOINT
HSQLDB - Automatically perform CHECKPOINT after DELETE
为避免 .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 的 space 在检查点被释放并在以后重新使用。
您可以通过减少日志大小设置来更频繁地执行检查点。最小设置 1 会在日志大小达到 1 MB 时生成自动检查点。
SET FILES LOG SIZE 1
由于 1 MB 的已记录 DDL 语句可能会导致 .lobs 文件的大小大幅增加,因此替代方法是对执行的 DELETE 语句进行计数,并在计数达到阈值时从您的应用程序发出 CHECKPOINT。
为避免 .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 的 space 在检查点被释放并在以后重新使用。
您可以通过减少日志大小设置来更频繁地执行检查点。最小设置 1 会在日志大小达到 1 MB 时生成自动检查点。
SET FILES LOG SIZE 1
由于 1 MB 的已记录 DDL 语句可能会导致 .lobs 文件的大小大幅增加,因此替代方法是对执行的 DELETE 语句进行计数,并在计数达到阈值时从您的应用程序发出 CHECKPOINT。