Quartz Scheduler + HSQLDB巨大的.lobs文件。大小永远增加

时间:2015-05-25 13:07:41

标签: java quartz-scheduler hsqldb

我使用的是石英2.2.1和HSQLDB 2.3.2和2.3.3(我已尝试过两种方法)。

我有1个石英作业和16个石英触发器。触发器非常频繁地发射(让我们说每秒) 当触发器触发quartz时,将DELETE和INSERT发送到数据库而不是使用UPDATE

从HSQLDB日志中获取的真实示例:

/*C3974*/SET SCHEMA PUBLIC

DELETE FROM QRTZ_TRIGGERS
  WHERE SCHED_NAME='monitORA' AND
  TRIGGER_NAME='CL1DEST1INF1PL1LIN7' AND
  TRIGGER_GROUP='grupoInformes'

INSERT INTO QRTZ_TRIGGERS
  VALUES('monitORA','CL1DEST1INF1PL1LIN7','grupoInformes',
         'informesSQL','group1',NULL,1432557642000,
         1432557639000,5,'ACQUIRED','CRON',
         1432556986000,0,NULL,1,978)

INSERT INTO QRTZ_FIRED_TRIGGERS
  VALUES('monitORA','monitORA11432557151496','CL1DEST1INF1PL1LIN7',
         'grupoInformes','monitORA1',1432557641149,1432557642000,
         5,'ACQUIRED',NULL,NULL,FALSE,FALSE)

SET SCHEMA SYSTEM_LOBS

DELETE FROM LOB_IDS WHERE LOB_ID=978

INSERT INTO LOB_IDS VALUES(978,121,1,30)

COMMIT

在qrtz_triggers表中有一个BLOB列,这就是为什么HSQLDB在LOB_IDS表中内部执行delete和insert的原因......

.lobs文件总是增加它的大小,虽然我执行检查点和检查点碎片整理......这是一个非停止环境中的一个大问题...... 执行3-5天后执行此1个作业和16个触发器,.lobs文件的大小增加8GB(并且正在增长)

为什么要执行删除和插入而不是更新?

以及如何避免.lobs文件永远增加?

非常感谢

1 个答案:

答案 0 :(得分:0)

尝试使用管理器工具(runManager.bat或runManagerSwing.bat)在数据库中执行以下命令:

CHECKPOINT DEFRAG

此命令回收数据库文件中未使用的空间。 如果这还没有帮助,请尝试以下方法:

SHUTDOWN COMPACT

此命令关闭数据库,创建一个能够重新创建数据库的插入脚本,然后执行它以重新创建数据库文件,这应该从头开始创建“干净”的数据库文件。

另见:

http://hsqldb.org/doc/guide/management-chapt.html#mtc_system_operations

请注意,对于较旧的HSQLDB版本中的lobs,这些命令可能无法正常工作。