DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 719|回复: 0
打印 上一主题 下一主题

[待整理] 理解 DB2 中列组统计信息

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 15:06:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DB2 SQL 优化器(后文简称为优化器)可以估计每个备选访问计划的执行成本,并根据其估计结果选择一个最佳访问计划。一个访问计划可以指定用来解析一条 SQL 语句的操作次序。  为正确地确定每种访问计划的成本,DB2 优化器需要准确的基数估计值。基数估计是这样一种过程:在应用了谓词或执行了聚集之后,优化器使用统计信息确定部分查询结果的大小。对于访问计划的每个操作符,优化器将估计该操作符的基数输出。一个或更多谓词的应用可以减少输出流基数。
  在计算谓词对于基数估计值的组合过滤效果时,通常会假设这些谓词彼此之间是独立的。然而,这些谓词可以在统计方面彼此关联。单独地处理它们通常会导致优化器低估基数值。而基数值的低估又会导致优化器选择一个次优的访问计划。
  对于至少应用了至少两个本地等式谓词的 SQL 语句,优化器将考虑使用多列统计信息来检测统计关联,并更加准确地估计多个谓词组合的过滤效果。同样对于连接两个或更多表的 SQL 语句,以及在一对表间至少使用了两个等式连接谓词的连接,优化器也会使用多列统计信息。
  一个本地等式谓词是一个应用于单个表的等式谓词,其描述如下所示:
  COLUMN = literal

  其中 literal 可以是以下任一内容:
       
  •   一个常量值;   
  •   一个参数标记或一个主变量;   
  •   一个专用寄存器(例如,CURRENT DATE)
  一个等式连接谓词的描述如下所示,它用于表 1 和表 2 间的连接:
  T1.COLUMN = T2.COLUMN

  DB2 V8.2 使用下面的多列统计信息:
       
  •   索引 keycard 统计信息:FIRST2KEYCARD、FIRST3KEYCARD、FIRST4KEYCARD 和 FULLKEYCARD   
  •   列组统计信息:列组基数值
  这些统计信息描述了包含两个或更多列的列集中不同分组的数量。
  在 DB2 V8.2 出现之前,只能使用索引 keycard 统计信息,并且要受下列条件约束:
       
  •   索引必须是完全限定的。如果键中的所有列都可以被等式谓词 引用(连接谓词或本地谓词,但不是两者的混合),那么这个索引就是完全限定的。   
  •   对于连接谓词,索引也必须是惟一的。
  在 DB2 V8.2 中,通过考虑到所有索引 keycard 统计信息而不要求索引完全限定,DB2 SQL 优化器进一步扩展了多列统计信息的使用。它还考虑到了用户收集的任何列组统计信息。本文讨论了优化器如何利用这些统计信息,以及用户如何识别要收集的列组统计信息。

         DB2 SQL 优化器(后文简称为优化器)可以估计每个备选访问计划的执行成本,并根据其估计结果选择一个最佳访问计划。一个访问计划可以指定用来解析一条 SQL 语句的操作次序。
  为正确地确定每种访问计划的成本,DB2 优化器需要准确的基数估计值。基数估计是这样一种过程:在应用了谓词或执行了聚集之后,优化器使用统计信息确定部分查询结果的大小。对于访问计划的每个操作符,优化器将估计该操作符的基数输出。一个或更多谓词的应用可以减少输出流基数。
  在计算谓词对于基数估计值的组合过滤效果时,通常会假设这些谓词彼此之间是独立的。然而,这些谓词可以在统计方面彼此关联。单独地处理它们通常会导致优化器低估基数值。而基数值的低估又会导致优化器选择一个次优的访问计划。
  对于至少应用了至少两个本地等式谓词的 SQL 语句,优化器将考虑使用多列统计信息来检测统计关联,并更加准确地估计多个谓词组合的过滤效果。同样对于连接两个或更多表的 SQL 语句,以及在一对表间至少使用了两个等式连接谓词的连接,优化器也会使用多列统计信息。
  一个本地等式谓词是一个应用于单个表的等式谓词,其描述如下所示:
  COLUMN = literal

  其中 literal 可以是以下任一内容:
       
  •   一个常量值;   
  •   一个参数标记或一个主变量;   
  •   一个专用寄存器(例如,CURRENT DATE)
  一个等式连接谓词的描述如下所示,它用于表 1 和表 2 间的连接:
  T1.COLUMN = T2.COLUMN

  DB2 V8.2 使用下面的多列统计信息:
       
  •   索引 keycard 统计信息:FIRST2KEYCARD、FIRST3KEYCARD、FIRST4KEYCARD 和 FULLKEYCARD   
  •   列组统计信息:列组基数值
  这些统计信息描述了包含两个或更多列的列集中不同分组的数量。
  在 DB2 V8.2 出现之前,只能使用索引 keycard 统计信息,并且要受下列条件约束:
       
  •   索引必须是完全限定的。如果键中的所有列都可以被等式谓词 引用(连接谓词或本地谓词,但不是两者的混合),那么这个索引就是完全限定的。   
  •   对于连接谓词,索引也必须是惟一的。
  在 DB2 V8.2 中,通过考虑到所有索引 keycard 统计信息而不要求索引完全限定,DB2 SQL 优化器进一步扩展了多列统计信息的使用。它还考虑到了用户收集的任何列组统计信息。本文讨论了优化器如何利用这些统计信息,以及用户如何识别要收集的列组统计信息。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 16:19 , 耗时 0.090367 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表