前言:最近数据库突然变得卡顿,查看了相关日志后,推测可能是索引碎片以及统计信息的问题,索引碎片很久之前已经写了个job定时处理,应该是跟统计信息的有关,所以写个随笔记录下相关的资料。

什么是统计信息

对于同一句话,SQL SERVER 有很多种方法来完成它。有些方法适合于数据量比较小的时候,有些方法适合于数据量比较大的时候。同一种方法,在数据量不同的时候,复杂度会有非常大的差别。索引只能帮助SQL SERVER找到符合条件的记录。SQL  SERVRE 还需要知道每一种操作所要处理的数据量有多少,从而估算出复杂度,选取一个代价最小的执行计划。说得通俗一点,SQL SERVR要能够知道数据是“长得什么样”的,才能用最快的方法完成指令。怎么能够让SQL SERVER知道数据的分布信息呢?在数据库管理系统里有个常用的技术,就是数据的“统计信息”(STATISTICS)。

查询优化器使用统计信息来创建可提高查询性能的查询计划。对于大多数查询,查询优化器已经为高质量的查询计划生成必要的统计信息;查询优化的统计信息是二进制大对象(BLOB),其包含关于表或索引视图的一个或多个列中的值的分布的统计信息。查询优化程序使用这些统计信息来估计查询结果中的基数或行数。这些基数估算使查询优化器能够创建高质量的查询计划。例如,根据您的谓词,查询优化器可以使用基数估计来选择索引查找运算符,而不是资源密集程度更高的索引扫描运算符,如果这样做可以提高查询性能。每个统计对象都在一个或多个表列的列表上创建,并包含显示第一列中值分布的直方图。多列上的统计对象还存储关于列之间的值的相关性的统计信息。这些相关统计信息或密度是从不同行列值的数量中导出的。

查看统计信息

DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , n ] ]
< option > :: =  STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM  

View Code

上面的sql可根据需求查询对应的统计信息,详细可点击查看微软文档

查得信息后,可参考这篇博客:统计信息含义

统计信息自动更新规则

1、如果统计信息是定义在变通表格上的,那么当发生下面变化之一后,统计信息就被认为是过时的,下次使用时,会自动触发一个更新动作。

(1)表格从没有数据变成有大于等于1条数据

(2)对于数据量小于500行的表格,当统计信息的第一个字段数据累计变化大于500以后。

(3)对于数据量大于500行的表格,当统计信息的第一个字段数据累计变化量大于500 + (20%)

2、临时表(temp table) 上可以有统计信息。其维护策略基本和普通表格一致。但是表变量(table variable) 上不能建统计信息。

这样的维护策略能够保证花费比较小的代价,确保统计信息基本正确。后面会有安例,反映这个维护策略在数据分布特殊的表上,也有可能造成一些负面的影响。

何时创建统计信息

查询优化器已经通过以下方式创建统计信息:

  1. 查询优化程序在创建索引时为表或视图上的索引创建统计信息。这些统计信息是在索引的键列上创建的。如果索引是筛选索引,则查询优化程序会针对筛选索引指定的相同行子集创建筛选统计信息。有关筛选索引的详细信息,请参阅创建筛选索引和CREATE INDEX(Transact-SQL)。

  2. 当AUTO_CREATE_STATISTICS打开时,查询优化程序为查询谓词中的单个列创建统计信息。

对于大多数查询,这两种创建统计信息的方法可确保高质量的查询计划; 在少数情况下,您可以通过使用CREATE STATISTICS语句创建其他统计信息来改进查询计划。这些附加统计信息可以捕获查询优化程序在为索引或单列创建统计信息时不会考虑的统计关联。您的应用程序可能在表数据中具有其他统计相关性,如果计算到统计对象中,则可以使查询优化程序能够改进查询计划。例如,对查询谓词列的数据行子集或多列统计信息的筛选统计信息可能会改进查询计划。

使用CREATE STATISTICS语句创建统计信息时,建议保持AUTO_CREATE_STATISTICS选项,以便查询优化器继续定期为查询谓词列创建单列统计信息。有关查询谓词的详细信息,请参阅搜索条件(Transact-SQL)。

当满足以下任何条件时,请考虑使用CREATE STATISTICS语句创建统计信息:

  • 数据库引擎优化顾问建议创建统计信息。
  • 查询谓词包含多个不在同一索引中的相关列。
  • 查询从数据子集中进行选择。
  • 该查询缺少统计信息。

详细的信息可参考:SQL文档-统计信息

转载于:https://www.cnblogs.com/9284chc0r0ij/p/10999382.html

数据库-统计信息相关资料相关推荐

  1. oracle优化器统计信息相关

    优化器使用统计信息来生成每个sql语句最优的执行计划.准确的统计信息对于数据库的效率至关重要. dba和程序开发人员都应该了解一些统计信息相关知识,这可以使你更好的理解为什么会生成一个你看到的执行计划 ...

  2. oracle 数据统计收集,Oracle 10g收集数据库统计信息

    1.需求概述 某数据库由于整体统计信息不准确,多次出现部分业务SQL选错执行计划,从而导致性能下降影响到最终用户体验,目前通过SQL_PROFILE绑定执行计划临时解决,但此方法不够灵活,后续维护工作 ...

  3. 达梦数据库统计信息的导出导入

    一.统计信息 对象统计信息描述了对象数据的分布特征.统计信息是优化器的代价计算的依据,可以帮助优化器较精确地估算成本,对执行计划的选择起着至关重要的作用.统计信息的收集频率是一把双刃剑,频率太低导致统 ...

  4. SQL Server 数据库统计信息更新对性能优化的切身体会

    年底前在开发一个SQL Server BI项目的过程中,我们测试SSIS包的时候,发现有好几天晚上取数的时间都超出了以前的 取数时间,刚开始我们以为是换了服务器,服务器硬件的性能有差异导致,后来我们仔 ...

  5. 达梦数据库-统计信息

    千里之行始于足下,梦想不付之行动,终究是纸上谈兵 经过一段时间的达梦DCP培训让学习了好多支持点.让我对达梦的理解更加深刻. 今天为大家说一说达梦数据的统计信息 在介绍索引之前介绍一下统计信息 :因为 ...

  6. PostgreSQL数据库统计信息——analyze执行函数

    在执行do_analyze_rel函数之前需要确定采样函数,如下: 如果是普通表或者物化视图,则采样函数采用acquire_sample_rows:relpages由RelationGetNumber ...

  7. PostgreSQL数据库统计信息——compute_scalar_stats计算统计数据

    如果列类型指定的是std_typanalyze函数决定compute_stats的取值: 如果列数据类型支持默认的等于(eqopr equals operator)和小于(ltopr less tha ...

  8. PostgreSQL数据库统计信息——examine_attribute单列预分析

    如下代码所示,如果指定分析的列,这里会对每个列进行预分析.遍历va_cols中的每一列,通过attnameAttNum函数返回该列在该表中的列号,并通过unique_cols集合排除重复的列名,最后通 ...

  9. http://vdisk.weibo.com/s/z6HxGAyBPqD4Q 关于数据统计的相关资料

    未下载的资料 数据分析葵花宝典   数据挖掘研究案例 上海财大时间序列课件 多元统计 概率统计基础 SPSS统计分析与行业应用案例 SAS统计分析与数据挖掘 转载于:https://www.cnblo ...

最新文章

  1. 【深度学习】(4) 梯度下降、损失函数
  2. Android 系统提供的文件下载
  3. php 登录注册api接口代码
  4. node.js初步认识
  5. Objective-C中的Block
  6. oracle sql developer 查看游标结果集(3.0.04
  7. 华为交换机S5700开启telnet
  8. java enum(枚举)使用详解 + 总结
  9. 九大类背包问题专题1---01背包问题(二维和优化一维法附代码)
  10. 论文阅读笔记——个体识别研究中的计算机辅助照片匹配:以塞伦盖蒂猎豹为例
  11. 上海富勒wms_【快消 | 三草两木牵手富勒科技,深化新零售布局】
  12. java 托盘 气泡 菜单_C#如何使用NotifyIcon实现任务栏托盘菜单及气泡提示
  13. Python爬虫工具
  14. mysql 双机备份_Mysql双机热备份
  15. 求任意一个自然数n的立方均可写成n个连续奇数之和。
  16. idea2021 乱码问题
  17. 计算机上画正比例函数,信息技术应用 用计算机画函数图象教案1
  18. TcaplusDB君 · 行业新闻汇编(12月25号)
  19. Android实现第三方登录并获取到头像、名字
  20. 哪些网站帮你打开了新世界的大门

热门文章

  1. 初识Frida--Android逆向之Java层hook (二)
  2. PoW 本质上是个去中心化的时钟
  3. CVPR 2017论文集锦
  4. android log丢失(三)动态切换logd机制和kernel机制
  5. JZOJ 5956. 【NOIP2018模拟11.7A组】easy LCA
  6. JZOJ 5385. 【NOIP2017提高A组模拟9.23】Carry
  7. matlab相关系数影像匹配_双目立体匹配步骤详解
  8. c语言程序设计精髓第二周,2实型数据C语言程序设计精髓.pdf
  9. pythonexcel表格教程_python对excel表格的操作
  10. ICCV 2017 《Towards End-to-End Text Spotting with Convolutional Recurrent Neural Network》论文笔记