在 PLI/COBOL 程序中可以维护多少个(最大)DB2 多行提取游标?
Posted
技术标签:
【中文标题】在 PLI/COBOL 程序中可以维护多少个(最大)DB2 多行提取游标?【英文标题】:How many (Maximum) DB2 multi row fetch cursor can be maintained in PLI/COBOL program? 【发布时间】:2018-05-09 11:57:47 【问题描述】:作为良好性能的一部分,可以在 PLI/COBOL 程序中维护多少(最大)DB2 多行提取游标?
我需要在 PLI 程序中维护 4 个游标,但我担心单个程序中的多提取游标的数量。
有没有其他方法可以检查多行获取是否比普通游标更有效?我尝试了 1000 条记录,但看不到运行时差。
【问题讨论】:
【参考方案1】:IBM published some information (PDF) 关于 2005 年 DB2 8 首次提供此功能时的多行提取性能。他们的数据没有提及给定程序中的游标数量,只提及提取的行数。
由此我推断,从性能的角度来看,多行提取游标本身的数量并不重要——在合理范围内。如果有人用 10,000 个这样的光标突破理性的极限,我将不会为他们的痛苦负责。
之前链接的 IBM 红皮书表明,每次提取检索 10 行时 CPU 时间改进了 40%,每次提取检索 100 多行时 CPU 时间改进了 50%。注意事项:
使用多行提取的性能提升通常取决于 上:
一次提取的行数 提取的列数 (用更少的列得到更多的改进)、数据类型和大小 列 提取的复杂性。为 not 节省的固定开销 必须在数据库引擎和应用程序之间进行 对路径较长的复杂 SQL 的百分比影响较小 长度。如果多行提取在每个语句中读取更多行,则会导致 CPU 时间改进,但在每次多行提取 10 到 100 行之后, 好处减少了。收益减少是因为,如果成本 在单行语句中,每行一个 API 开销是 100%,它得到 除以一条 SQL 语句中处理的行数。所以 10 行变为 10%,100 行变为 1%,1000 行变为 0.1%,并且 那么收益就变得微不足道了。
红皮书还讨论了他们如何进行测试以得出性能数据。简而言之,他们改变了检索的行数并多次重新运行他们的程序,这几乎是您所期望的。
【讨论】:
以上是关于在 PLI/COBOL 程序中可以维护多少个(最大)DB2 多行提取游标?的主要内容,如果未能解决你的问题,请参考以下文章