DB2 Z / OS插入/选择性能

时间:2014-11-27 19:40:31

标签: performance db2 zos insert-select

我们现在正在开发一个在带有db2 z / OS 10的websphere z / OS 8.5上运行的系统。目前我们面临以下性能问题:

我们需要将记录从一个表复制到另一个表。对于超过30个月的条目,此复制应在大约15分钟内完成。

我们现在有什么: - 两个表都是分区的(相同的分区列x) - 使用websphere批处理在java中复制批处理。此批处理作业并行运行,每个并行子作业在一个分区上执行一次插入/选择(复制约3-5 mio条目)。从数据角度来看,并行作业应该完全是分离的。

我们正在执行的SQL看起来像这样

Insert into targetTable (...) Select (...) from sourceTable Where partitionKey='xxx'.

我们在观察什么: 插入/选择不会充分利用db2的插入性能: - 插入/选择:大约8000个插入/秒 - 通过jdbc批处理的普通插入:超过50 000个插入/ s

我们想问以下问题: - 为什么单个插入/选择的插入性能如此之慢?我们需要进行任何特殊配置吗? - 正在多个分区并行工作的正确方法?任何替代品? - 我们应该提交更小的插入/选择包吗? - db2在插入/选择

的后台做什么

谢谢你,以及最好的问候

1 个答案:

答案 0 :(得分:1)

它不是"单个插入"这花了很长时间。这是3,000,000个插页。

您使用与RDBMS分析任何其他问题的方式分析此问题...

  1. where声明sargable上的select条款是什么?
  2. 目标表上是否有索引?多少?你能减少这个数字吗?
  3. explain输出告诉您什么?
  4. sort
  5. 中隐含select操作吗?

    ......不幸的是,这些都是我们可以帮助你的事情。

    至于单个insert / select和JDBC批处理之间的区别,后者中有足够的变量(使用DB2网关,其他"帮助"软件)可能会发挥作用,我无法评论。我会说将单个insert / select移动到SQL/PL本机存储过程是值得探索的。