【发布时间】:2016-04-22 08:19:18
【问题描述】:
谁能建议我如何将批量查询插入到 Apache Derby 数据库中,同时仍能以良好的性能处理重复条目?
作为尝试平衡性能和在 INSERT 上处理重复键的能力的最后手段,我决定让 JDBC / Derby 告诉我批处理查询何时会导致重复键,捕获错误,然后继续剩余的批处理查询。
不幸的是,一旦检测到错误,它似乎就清除了整批查询,这意味着我丢失了所有剩余的记录。
我尝试过的事情:
- 执行程序查询以确定条目是否已经存在。放弃了这个,因为数据当前可能是批量的,所以会丢失。
- 仅当记录不存在时才使用 SQL 查询插入。放弃了这个,因为它导致了糟糕的 INSERT 性能(下降了近 70%)。
- 让数据库告诉我有关重复键的信息,捕获错误并继续处理批处理。即将放弃这一点,因为它“忘记”批处理中还有其他查询要处理。
如果只有 Derby 支持 INSERT IGNORE。
谢谢
【问题讨论】:
-
您是在嵌入式模式下运行 derby 还是作为网络服务器运行?
-
它以嵌入式模式运行。它只有一个用户——即应用程序。它是一个轻量级的临时数据库
标签: java sql database jdbc derby