祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 6238|回复: 0

[参考资料] SYBASE ASE中的统计信息

[复制链接]

[参考资料] SYBASE ASE中的统计信息

[复制链接]
ehxz

主题

0

回帖

58万

积分

管理员

积分
588651
贡献
在线时间
小时
2011-6-14 17:17:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
在SYBASE ASE中,SQL语句执行的时间主要取决于查询执行器对数据 的访问路径和处理方式,也就是执行计划,而最优的执行计划由查询优化器负责获取。SYBASE ASE的查询优化器是基于成本的,对于每一个获得的执行计划,优化器都会进行成本的计算,最终将成本最低的执行计划标识为最优。优化器通过一定的算法和公式来衡量执行计划的成本,而在算法和公式中使用的数据就是数据库 的统计信息。统计信息存储在两个系统 表中,一个是systabstats表,用于存储表/索引级的统计信息,另一个是sysstatistics表,用于存储列级的统计信息。
        如何阅读表的统计信息
SYBASE提供了操作系统级的命令optdiag用于输出统计信息,其常见使用方式如下:
optdiag statistics db_name[.owner[.[tab_name[.col_name] ] ] ]
-U user_name
-P password
-S server
-o output_file
eg:
optdiag statistics zxvnms.dbo.device -Usa -P -S205 -o D:\device.log

输出的统计信息位于output_file中
        统计信息类型
1.        表/索引级的统计信息
以下为某个ALLPAGES类型的表的统计信息的输出中表和索引级的统计信息,由于聚簇索引的页级就是表的数据,因此对于ALLPAGES类型的表,聚簇索引的统计信息也就是表的统计信息,而非聚簇索引则有单独的统计信息。如果是DOL类型的表,由于其聚簇索引的结构类似于其非聚簇索引,因此聚簇索引和非聚簇索引都有单独的统计信息。
Statistics for index:                   "tbl_Result_18476745991" (cluster ed)
Index column list:                     "StartTime", "StartTimeDstOffset", "ObjectNo"
     Data page count:                438440
   ---数据页的数目,用于估计表扫描的成本
     Empty data page count:            0
   ---空数据页的树木,如果太多,会导致大块IO的效率下降
     Data row count:                   7534351.0000000000000000
   ---数据行数目,优化器用其设定每页的平均行数
     Forwarded row count:              0.0000000000000000
   ---前移行数目,仅用于DOL表,优化器为每一个前移行计算两个IO
     Deleted row count:                0.0000000000000000
      ---删除行数目,仅用于DOL表,如果太多,意味着页上数据填充率比较低
     Data page CR count:              375587.0000000000000000
   ---用于计算Data page cluster ratio
     OAM + allocation page count:      52506
      ---OAM页和分配但也首页的数目
     First extent leaf pages:            0
     Data row size:                     294.5465171263140292
     Index height:                      3
     Parallel join degree:               0.0000000000000000
     Unused page count:                9192
     OAM page count:                  52
  Derived statistics:                  
     Data page cluster ratio:           0.1638354164765989
   ---数据页聚簇率,太低意味着在数据在不同extent上的分布比较分散,会导致大块
    IO的效率下降
     Space utilization:                 0.6202966169989167
     Large I/O efficiency:              0.1459182559566758
Statistics for index:                   "StartTimeIndex" (nonclustered)
Index column list:                      "StartTime", "ObjectNo", "StartTimeDstOffset"
     Leaf count:                        24911
   ---索引页级的数据页数目
     Empty leaf page count:             0
     Data page CR count:                820046.0000000000000000
     Index page CR count:               13291.0000000000000000
     Data row CR count:                 879449.0000000000000000
     First extent leaf pages:             0
     Leaf row size:                      21.0000000000000000
     Index height:                       2
  Derived statistics:                  
     Data page cluster ratio:           0.0720347204369401
     Index page cluster ratio:          0.5331008854429509
     Data row cluster ratio:            0.9378502633418034
     Space utilization:                 0.7783659386238538
     Large I/O efficiency:              0.2342856528655574
2.        列级统计信息
  
Statistics for column:                  "StartTime"
Last update of column statistics:       Apr 10 2007  9:43:36:100PM
     Range cell density:                0.0003456469583822
   ---描述列中副本值的平均数,密度越接近1,不同的值越多,越接近0,值越单一
     Total density:                     0.0003456469583822
   ---整个列中重复值的平均数,优化器他把用做评估一次连接中表扫描有多少返回行
     Range selectivity:                 default used (0.33)
     In between selectivity:             default used (0.25)
   ---选择性,优化器在无法知道SARG值时,适用默认的选择性,对于等式使用10%,开区间条件,使用33%,闭区间使用25%
     Unique range values:               0.0003287310979619
     Unique total values:               0.0003287310979619
     Average column width:              default used (8.00)
Histogram for column:                   "StartTime"
---直方图
Column datatype:                        datetime
Requested step count:                    20
---步骤数
Actual step count:                        20
Sampling Percent:                        0
     Step     Weight                    Value
        1     0.00000000       <=       "Mar 10 2007  2:44:59:996AM"
        2     0.05280559       <=       "Mar 12 2007  1:45:00:000AM"
        3     0.05153025       <=       "Mar 13 2007 10:45:00:000PM"
        4     0.05326261       <=       "Mar 15 2007  7:45:00:000PM"
        5     0.05243758       <=       "Mar 17 2007  2:30:00:000PM"
        6     0.05464172       <=       "Mar 19 2007 10:45:00:000AM"
        7     0.05039562       <=       "Mar 21 2007  2:45:00:000AM"
        8     0.05414711       <=       "Mar 22 2007  8:45:00:000PM"
        9     0.04996035       <=       "Mar 24 2007 11:00:00:000AM"
       10     0.05312137       <=       "Mar 26 2007  4:00:00:000AM"
       11     0.05150971       <=       "Mar 27 2007  6:00:00:000PM"
       12     0.05440811       <=       "Mar 29 2007  9:15:00:000AM"
       13     0.05107565       <=       "Mar 30 2007  8:15:00:000PM"
       14     0.05475893       <=       "Apr  1 2007  9:00:00:000AM"
       15     0.05237434       <=       "Apr  2 2007  8:00:00:000PM"
       16     0.05490058       <=       "Apr  4 2007  6:30:00:000AM"
       17     0.05202205       <=       "Apr  5 2007 10:30:00:000AM"
       18     0.05357409       <=       "Apr  7 2007  9:15:00:000PM"
       19     0.05094394       <=       "Apr  9 2007  5:00:00:000AM"
       20     0.05213039       <=       "Apr 10 2007  9:15:00:000PM"
直方图描述了在各个范围中值的比例
&#61548;        update statistics的使用
优化器使用统计信息时,首先把统计信息读入内存 中,在表的数据发生改变时,其内存中的统计信息也随之发生改变,但只有在正常关闭数据库,运行sp_flushstats,执行optdiag以及执行 update statistic等情况下统计信息才会被立即写入磁盘,在数据库运行过程中,housekeeper进程会在空闲时将统计信息写入磁盘。在数据库长期运行后,由于统计信息更新的滞后,会导致统计信息出现误差,这时候不准确的统计信息会导致优化器选择错误的执行计划,所以在数据库运行一段时间以后需要更新统计信息。更新的命令有:
update statistics table_name [index_name]
---更新表以及和特定索引的统计信息
update statistics table_name [col_name]
---更新特定列的统计信息
update index statistics table_name [index_name]
---更新索引以及索引头列以及头列组合的统计信息
update all statistics table_name
---更新表中所有列的统计信息
需要注意的是,更新统计信息需要扫描全表或是所有索引,因此对于数据量很大的表会使用很长时间,这期间数据库会对表加锁,有可能阻塞表的插入更新和删除操作。
对于一般的查询使用update index statistics table_name 就足够了,如果对于某些特殊的查询,可以考虑对于使用到的列进行列统计信息的单独更新,这样可以节约更新统计信息的时间。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/paluo/archive/2010/11/17/6015170.aspx

共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-11-23 23:24 , Processed in 0.033865 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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