Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石英调度器&x2B;HSQLDB巨大的.lobs文件。规模不断扩大_Java_Quartz Scheduler_Hsqldb - Fatal编程技术网

Java 石英调度器&x2B;HSQLDB巨大的.lobs文件。规模不断扩大

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

我使用的是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='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