我正在尝试hsqldb 2.2.5版的缓存表功能.
只是使用JDBC批量插入到一个表中,奇怪的是如果我单独运行我的测试,虽然我使用了创建缓存表,但它仍然使用内存模式,因为在100,0000条记录之后,OOM.
但是,如果我在此测试用例或使用之前运行其他测试jdbc:hsqldb:mem:HSQLDB;hsqldb.default_table_type=cached
,它将使用缓存表.
无论如何,我不想使用缓存默认.
缓存表性能在2600000条记录之后 看起来如此 ,性能下降了不少.在3600000条记录之后,它变得非常缓慢
也许一些索引占用内存完全使JVM变得缓慢.不是因为db本身
两个子问题
1)强制缓存表的任何其他配置是否使用缓存模式?
2)任何db配置都有助于提高缓存表的性能?
(使用JDK1.6 -Xmx1024m)
您报告的URL是mem:
(内存中的所有内容 - 无持久性)数据库.在此设置中,简单地忽略CACHED表的任何引用或设置,并将数据存储在内存中.
可用的CACHED表功能是file:
(持久存储到磁盘)数据库.这些数据库还支持持久性MEMORY表(所有数据都存储在内存中).CACHED和MEMORY表的数据都存储在file:
数据库的磁盘上.
关于CACHED的执行,最近使用的行被缓存在内存中,当缓存变满时,更改将保存到磁盘.
数据库引擎使用java.nio
方法访问磁盘上大于16MB且低于特定限制的数据库.要提高性能,可以使用hsqldb.nio_max_size
属性或等效的SQL语句来增加限制.
通常,磁盘在随机访问模式下很慢(每秒最多100次访问).使用缓存,nio和其他策略可以减少有效访问时间,但仅在某种程度上.
另请注意,您可以在批量插入期间关闭数据日志记录,并再次将其打开以进行正常的数据库操作.
本指南的本章介绍了这些问题和设置.
http://hsqldb.org/doc/2.0/guide/deployment-chapt.html
归档时间: |
|
查看次数: |
2656 次 |
最近记录: |