技术开发 频道

探讨SQL Server统计信息与性能优化

  【IT168 专稿】2013年4月18-20日,第四届中国数据库技术大会(DTCC 2013)在北京福朋喜来登酒店拉开序幕。在为期三天的会议中,大会将围绕大数据应用、数据架构、数据管理(数据治理)、传统数据库软件等技术领域展开深入探讨,并将邀请一批国内顶尖的技术专家来进行分享。本届大会将在保留数据库软件应用实践这一传统主题的基础上,向大数据、数据结构、数据治理与分析、商业智能等领域进行拓展,以满足于广大从业人士和行业用户的迫切需要。

  自2010年以来,国内领先的IT专业网站IT168联合旗下ITPUB、ChinaUnix技术社区已经连续举办了三届数据库技术大会,每届大会超过千人规模,云集了国内技术水平最高的数据架构师、DBA、数据库开发工程师、研发总监、IT经理等,是目前国内最受欢迎的数据库技术盛会。

SQL Server统计信息与性能优化
点击进入第四届中国数据库技术大会(DTCC 2013)报道专题

  在4月19日(大会第二天)下午的主题演讲中,来自携程网的SQL SERVER DBA张健先生,为我们分享了关于《SQL SERVER统计信息与性能优化》的相关话题,其中主要提到了SQL SERVER统计信息简介、为什么需要统计信息、以统计信息视角看性能优化,以及统计信息的维护和实例分享。

SQL Server统计信息与性能优化
携程网SQL SERVER DBA张健

  SQL Server统计信息介绍

  关于SQL Server统计信息概念,张健先生介绍说,其主要包括四个方面,统计信息包含某列的数据分布;统计信息包含列和组合列数据的唯一性;每一个索引都有一个自动生成的统计信息,以及查看统计信息。

SQL Server统计信息与性能优化
统计信息能做什么?

  统计信息能做什么

  查询优化器是基于执行的成本来生成执行计划的;

  执行的成本基于预估表返回的行数;

  返回的行数是基于数据的分布;

  数据的分布来源于统计信息。

  我们如何作出正确执行计划呢?张健先生介绍说,我们应注意以下几点,查看执行计划的估计和实际返回行数的差距、执行计划依赖统计信息、不精确统计信息导致错误的估计返回行数、由此导致选择错误索引和操作符(physical operator),最终产生错误的选择路径。

SQL Server统计信息与性能优化
从统计信息视角看

  Statistics 自动更新

  临时表行数<6,累计insert/update为6;

  正常表,row<=500,累计500更新后触发;

  永久表 row>500(500 + 表的 20%) 发生了变动;

  表变量没有统计信息;

  Sys.sysindexes 字段 rowmodctr。

  过时或不精确统计信息产生问题

  估计行数>实际行数;

  优化器选择hash 操作符;

  分配过多内存,降低并发。

  估计行数<实际行数;

  优化器选择inner join操作符;

  内存分配不够,导致使用tempdb,产生多余磁盘I0。

0
相关文章