作为良好性能的一部分,可以在PLI / COBOL程序中维护多少(最大)DB2多行获取游标?
我需要在PLI程序中维护4个游标,但我担心单个程序中多次获取游标的数量。
有没有其他方法来检查多行提取比普通光标更有效?我尝试了1000条记录但是我看不到运行时间的差异。
答案 0 :(得分:0)
IBM published some information(PDF)关于2005年DB2 8中首次提供此功能时的多行获取性能。他们的数据没有提到给定程序中的游标数量,只提取了获取的行数
由此我推断,从性能角度来看,多行获取游标本身的数量并不值得关注。如果有人用10,000个这样的游标推动理性限制,我将不会为他们的痛苦负责。
之前链接的IBM红皮书表明,每次获取检索10行可以节省40%的CPU时间,并且每次获取检索100多行可以节省50%的CPU时间。注意事项:
通常使用多行提取的性能改进取决于 于:
- 在一次提取中提取的行数
- 提取的列数 (使用更少的列进行更多改进),数据类型和大小 列
- 获取的复杂性。保存的固定开销不是 必须介于数据库引擎和应用程序之间 对具有较长路径的复杂SQL具有较低的百分比影响 长度。
如果多行提取每个语句读取更多行,则会产生 CPU时间改进,但每行多次获取10到100行后, 好处减少了。如果成本增加,效益会降低 它获得的每行一个API开销在单行语句中是100% 除以一个SQL语句中处理的行数。所以 变为10%,10行,1%,100行,0.1%,1000行,和 然后利益可以忽略不计。
红皮书也讨论了他们如何进行测试以获得他们的表现数据。简而言之,它们改变了检索的行数并重新编程了几次,这几乎是你所期望的。