我使用的是H2数据库--在嵌入式模式下运行--当我的应用程序启动时,我会用来自mySQL数据库的数据加载H2数据库。我使用链接表指向mySQL表。
我的问题是,我正在尝试加快H2在表上创建索引所用的时间,特别是对于较大的表(5Million+)。
有人知道在我将下一个表的数据加载到H2中时,在单独的线程中运行CREATE INDEX命令是否安全吗?例如:线程1:加载表1,->告诉线程2开始创建索引,然后线程1加载表2,依此类推。
我不能在加载表时使用MVCC模式,因为稍后我在执行选择时需要使用MULTI_THREADED模式。当我尝试使用MULTI_THREADED模式时,即使我正在将数据加载到离散表中,我也得到了锁定错误。
非常感谢!
发布于 2013-02-15 16:49:02
可行的方法(但我不确定是否更快)是先创建表和索引,然后并行装入这些表。这应该可以避免系统表中的锁定问题。
发布于 2013-04-05 17:38:47
我还想添加rst.findColumn("columnName")方法,以便在获得表的结果集后查找索引。rst是一个ResultSet对象。这就是我所使用的。
发布于 2017-10-10 07:18:54
另一种显著提高H2加载尤其是索引性能的方法是将初始内存设置为接近预期内存需求。作为一个例子,这一改变允许一个1.5 20需求的应用程序在47秒内启动,而不是在15 -20分钟后失败。在此之前,我们看到超过了GC开销限制和JVMTI错误。
将以下内容添加到VM参数中(作为示例):
-Xms2g
-Xmx4ghttps://stackoverflow.com/questions/14888811
复制相似问题