首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jackcess表限制?

Jackcess表限制?
EN

Stack Overflow用户
提问于 2016-08-30 16:09:18
回答 1查看 285关注 0票数 0

目前,我正试图解决一个与其他人编写的程序相关的问题,该程序使用Jackcess版本1.1.8将信息写入Access数据库。在应该将400万行添加到给定访问表的运行中,会出现以下异常:

代码语言:javascript
复制
08/29/2016 06:01:47 | ERROR | java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Unknown Source)
at java.nio.HeapByteBuffer.getInt(Unknown Source)
at com.healthmarketscience.jackcess.ReferenceUsageMap.addOrRemovePageNumber(ReferenceUsageMap.java:82)
at com.healthmarketscience.jackcess.UsageMap.addPageNumber(UsageMap.java:201)
at com.healthmarketscience.jackcess.Table.newDataPage(Table.java:761)
at com.healthmarketscience.jackcess.Table.addRows(Table.java:714)
at com.healthmarketscience.jackcess.Table.addRow(Table.java:660)

从我在网上看到的情况来看,Jackcess的当前版本是2.*,这是通过使用最新版本可以解决的问题,还是存在更大的问题,即访问表需要400万行?或者,是否有一种方法可以通过游标对象添加较少内存密集型的行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 00:43:23

如果所讨论的应用程序对您的业务仍然很重要,那么您需要更新它以使用Jackcess的当前版本。到目前为止,你已经用了9年多的时间了(Jackcess 1.1.8是在2007年2月发布的),从那时起,事情就有了一些进展。

值得注意的是,当前版本的Jackcess支持DatabaseBuilder#setAutoSync(false),它禁用数据库文件更新的逐行刷新。(我搜索了Jackcess 1.1.8源代码中的'autosync‘,没有找到匹配项,所以我假设当时不支持它。)

对于使用Jackcess 2.1.3进行的100,000行测试,setAutoSync(true) (默认)大约需要200秒,而与setAutoSync(false)相同的代码则需要8秒。

一个包含4,000,000行setAutoSync(false)的测试插入花费了大约220秒,或仅超过3.5分钟。根据上面的数字,如果没有 setAutoSync(false),相同的操作将需要大约5500秒或1.5小时的时间来完成相同的任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39232363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档