【问题标题】:DB2 LUW 10.5 - How to force DB2 Stored procedures to use latest stats for most optimized planDB2 LUW 10.5 - 如何强制 DB2 存储过程使用最新的统计数据来实现最优化的计划
【发布时间】:2018-05-16 17:36:12
【问题描述】:

我们偶尔会看到问题。运行 SQL 的存储过程运行速度非常慢。从命令行运行时相同的 SQL 运行速度非常快。似乎存储过程使用了不同的路径。我们的解决方法是删除并重新创建该过程,然后它会选择正确的计划。

有没有办法在运行时用指令重新生成执行计划来执行存储过程,从而每次都得到最好的计划。

【问题讨论】:

  • db2 luw 版本 10.5.FP8 在 Linux 上。

标签: stored-procedures db2 sql-execution-plan db2-luw


【解决方案1】:

您可能不想在每次调用过程时都重新编译计划,因为您首先失去了拥有该过程的性能优势。

当你确实需要重新编译它时,在稳定的环境中不应该太频繁地发生,你可以使用REBIND_ROUTINE_PACKAGE系统存储过程:

call SYSPROC.REBIND_ROUTINE_PACKAGE('P', 'YOUR_SP', '')

如果您确实决定希望在每次调用过程时重新创建计划,您可以在创建过程时设置REOPT ALWAYS 绑定选项,使用多种方式described in the manual,例如通过执行@ 987654325@创建程序前

【讨论】:

  • 您还可以在存储过程中使用动态 SQL 语句(参见 EXECUTE 语句),因此您可以只针对单个语句,而不必重新选择整个存储过程中的所有语句每次。
猜你喜欢
  • 2019-05-09
  • 1970-01-01
  • 2017-01-01
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多