gpt4 book ai didi

java - SQLServer jdbc批量执行性能

转载 作者:行者123 更新时间:2023-12-02 09:06:25 25 4
gpt4 key购买 nike

我正在使用以下模式在 SQLServer 2008 R2 上执行 jdbc 批处理。批处理执行是在一张表上执行简单的 MERGE 语句,并根据 MERGE 连接子句使用适当的索引。

batchSize = 50;
for(.....){
...
...
...

//add to batch
ps.addBatch();
if (count >= batchSize) {
result = ps.executeBatch();
count = 0;
}
}
if (count > 0) {
result = ps.executeBatch();
count = 0;
}

我有非常大的数据注入(inject)for循环。据我观察,最初执行大小为 50 的批处理大约需要 10 分钟。 150 毫秒,然后当达到 40 万条记录时,它会呈指数增加到 2.5 分钟!

是否需要一些特定于 sqlserver 的调整?

最佳答案

插入数据量为 400k 时,我用了 @30 分钟时间!!!我必须执行以下操作:

  • 将 MERGE 更改为 DELETE/INSERT(如果保留 MERGE,则需要 1.5 小时)
  • 将批量大小增加到 1k
  • 每批执行后提交
  • 批量执行后调用 ps.clearBatch()

就是这样...:)

关于java - SQLServer jdbc批量执行性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com