Properties 截断hsqldb花费的时间太多
我使用的是HSQLDB2.3.2,我遇到了以下问题:Properties 截断hsqldb花费的时间太多,properties,hsqldb,truncate,Properties,Hsqldb,Truncate,我使用的是HSQLDB2.3.2,我遇到了以下问题: 我的数据库缓存了包含10000条记录的表,没有任何约束和索引。其大小约为900mb。我关闭了自动提交模式,当我尝试执行“Truncate table name”时,执行会挂起,但只有dbName.backup在增长。原因如下: 跟踪引擎:?-copyShadow[大小、时间]2246252 9721跟踪 发动机:?-setFileModified标志集跟踪引擎:?-缓存保存 行[计数,时间]总计248019921操作248019921 txt
跟踪 发动机:?-setFileModified标志集
跟踪引擎:?-缓存保存 行[计数,时间]总计248019921操作248019921 txts 96
跟踪引擎:?-copyShadow[大小、时间]4426920 7732
跟踪 发动机:?-缓存保存行[计数,时间]总计4960917775操作 248087854 txts 96
跟踪引擎:?-copyShadow[大小、时间] 65747969024
大约需要1500-2000秒,最后我可以得到空表或异常,如下所示:
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1,525.509 sec
org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Caused by: java.lang.OutOfMemoryError: Java heap space
删除截断后的dbName.backup。我不必在应用程序中使用任何备份,如何避免复制
#HSQL数据库引擎2.3.2 #2015年3月19日星期四08:42:10 版本=2.3.2
修改=否
hsqldb.applog=1
,但什么也没发生。dbName.app.log出现,以防您更改dbName.script中的
SET DATABASE EVENT log LEVEL 1
从我的应用程序使用数据库后,dbName.properties将被覆盖:“是”上的“修改”更改以及下面的任何行将被删除。我做错了什么
我的数据库缓存了一个表,其中有10000条记录,没有任何
约束和索引
没有任何约束和索引的大型表是错误的。此表上影响几行的任何SELECT、UPDATE或DELETE都必须搜索表中的所有行
我尝试执行“截断表tableName”
上面的语句允许您在提交之前回滚操作。用于回滚的信息存储在内存中,当表非常大时,内存将耗尽。如果确实要提交更改,请使用以下语句:
TRUNCATE TABLE tableName AND COMMIT
指南中提到了这一点:
可以对.properties文件进行的唯一添加是将数据库文件设置为只读。任何其他更改都将被忽略并删除
.backup文件供数据库引擎内部使用,您无法停止使用。Thx获取答案!你的陈述非常有效!顺便说一句,我稍后会添加约束,我现在不需要