Java 石英调度器&x2B;HSQLDB巨大的.lobs文件。规模不断扩大
我使用的是quartz 2.2.1和HSQLDB 2.3.2以及2.3.3(我已经试过了) 我有1个石英工作和16个石英触发器。触发器非常频繁地触发(比如说每秒一次) 触发触发器时,将向数据库发送删除和插入,而不是使用更新 从HSQLDB日志中获得的真实示例:Java 石英调度器&x2B;HSQLDB巨大的.lobs文件。规模不断扩大,java,quartz-scheduler,hsqldb,Java,Quartz Scheduler,Hsqldb,我使用的是quartz 2.2.1和HSQLDB 2.3.2以及2.3.3(我已经试过了) 我有1个石英工作和16个石英触发器。触发器非常频繁地触发(比如说每秒一次) 触发触发器时,将向数据库发送删除和插入,而不是使用更新 从HSQLDB日志中获得的真实示例: /*C3974*/SET SCHEMA PUBLIC DELETE FROM QRTZ_TRIGGERS WHERE SCHED_NAME='monitORA' AND TRIGGER_NAME='CL1DEST1INF1PL1
/*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_触发器表中有一个BLOB列,这就是HSQLDB在LOB_IDS表中内部执行delete和insert的原因
.lobs文件总是在增加其大小,尽管我执行了检查点和检查点碎片整理……这在不间断的环境中是一个大问题。。。。。。
执行3-5天后,使用1个作业和16个触发器,.lobs文件的大小将增加到8GB(并且还在增长)
为什么执行删除和插入而不是更新
如何避免.lobs文件永远增加
非常感谢尝试使用管理器工具(runManager.bat或runManagerSwing.bat)在数据库中执行以下命令: 此命令回收数据库文件中未使用的空间。 如果这仍然没有帮助,请尝试以下操作:
SHUTDOWN COMPACT
此命令关闭数据库,创建一个能够重新创建数据库的插入脚本,然后执行该脚本以重新创建数据库文件,该脚本将从头创建“干净”的数据库文件
另见:
请注意,对于较旧的HSQLDB版本中的LOB,这些命令可能无法按预期工作。更新将转换为DELETE和INSERT语句。在您报告的.log代码段中未创建新的LOB(对LOB表的更改表示实际的LOB创建和删除)。如果应用程序保留旧记录并添加新记录,则.lobs文件将增长。这一定是石英的工作方式。
SHUTDOWN COMPACT