科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网存储频道如何处理DB2执行RUNSTATS操作时遇到SQL2314W警告信息的问题?

如何处理DB2执行RUNSTATS操作时遇到SQL2314W警告信息的问题?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

当一个表正在被更新的时候,可以对其执行RUNSTATS,进行表和索引数据统计信息的收集,但根据更新操作的级别不同,得到的统计信息可能是不一致的

2007年9月7日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

 

环境

产品:DB2 UDB
产品:跨平台
版本:V8,V9


 
问题

    当一个表正在被更新的时候,可以对其执行RUNSTATS,进行表和索引数据统计信息的收集,但根据更新操作的级别不同,得到的统计信息可能是不一致的。您可能会遇到如下的错误信息:

SQL2314W 某些统计信息处于不一致的状态。最近收集的 "<对象-1>"统计信息与现有的 "<对象-2>" 统计信息不一致。


 
解答

    不一致的统计信息可能会导致不理想的查询计划,SQL2314W就是产生这种可能性的警告信息。您应该尝试在应用对该表的访问级别尽可能低(或者如果可能的话没有任何操作)的情况下来执行RUNSTATS命令,如尝试尽量避免在有更新操作的情况下进行RUNSTATS操作。

    另外,RUNSTATS命令缺省使用的是“ALLOW WRITE ACCESS”选项,您也可以使用选项“ALLOW READ ACCESS”来执RUNSTATS,这样,在RUNSTATS执行的时候,其他操作将不能更改该表。但这个选项会对应用的并行性有影响,因为任何想要更改表的操作都会处于等待状态。为了减少表被ALLOW READ ACCESS选项的RUNSTATS锁定的时间,您可以考虑使用TABLESAMPLE选项,这个选项导致RUNSTATS对于表的部份采样数据而不是所有数据收集统计信息。对于采样数据大小的合理选择,可以在确保统计信息一致性的情况下,加快RUNSTATS的速度。

    如果以上的建议都无法阻止SQL2314W警告信息的出现,而检查访问该表的应用的存取计划时发现确实存在优化器未能自动选择最优的存取计划的情况,应考虑在尽量保证RUNSTATS可获得较高存取权限的时候重新执行RUNSTATS,以便优化器重新产生最优的存取计划。不过对于因遇到SQL2314W产生的非最优的存取计划,如本应选择索引扫描,但优化器选择了表扫描的情况,也可以考虑认为地用ALTER TABLE语句将该表标记成“volatile”,以鼓励优化器选择索引扫描,而不考虑表扫描。


 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章