首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache & Java -优化插入

Apache & Java -优化插入
EN

Stack Overflow用户
提问于 2016-04-19 14:00:32
回答 1查看 267关注 0票数 1

我目前正在使用Apache作为我的应用程序的临时本地数据库,我想要一些关于如何优化插入性能的技巧。

当应用程序启动时,它从CSV文件中读取记录--这可能是数百万,但更有可能是几十万。一旦处理完这些信息,最后的SELECT查询就会总结这些信息。

目前插入6000条记录大约需要1分钟。有3个表,其中2个存储唯一的数据,其中一个表是两个表之间的查找表,如下所示:

代码语言:javascript
复制
CREATE TABLE table1
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(40))

CREATE TABLE table2
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(100),
field2 INT,
field3 VARCHAR(40))

CREATE TABLE table1table2lookup
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 INT NOT NULL,
field2 INT NOT NULL)

目前,我使用参数化PreparedStatements批处理来提高速度。

我还关闭了自动提交模式,以便只在批量插入时提交。

EN

回答 1

Stack Overflow用户

发布于 2016-04-19 14:09:41

来自“调优Derby”的文档

如果可能的话,避免在自动提交模式下插入,因为每次提交都需要更新每个INSERT语句在磁盘上的日志。在执行物理磁盘写入之前,提交将不会返回。要加快速度:在自动提交假模式下运行,在一个事务中执行多个插入,然后显式地发出提交。

但是对于初始导入,您应该考虑使用导入过程直接从文件加载数据:

如果应用程序允许对表进行初始加载,则可以使用导入过程将数据插入到表中。使用这些接口加载到空表时,Derby不会记录单个插入。有关导入过程的更多信息,请参见看见 Derby工具和实用程序指南。

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

https://stackoverflow.com/questions/36720662

复制
相关文章

相似问题

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