AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 19130
Accepted
Onion-Knight
Onion-Knight
Asked: 2012-06-13 07:16:52 +0800 CST2012-06-13 07:16:52 +0800 CST 2012-06-13 07:16:52 +0800 CST

何时更新统计数据?

  • 772

我继承了执行以下操作的维护计划:

  • 清理旧数据
  • 检查数据库完整性
  • 执行数据库和事务日志备份
  • 重组我们的索引
  • 更新统计
  • 删除旧的备份和维护计划文件

在 23 分钟的维护计划中,更新统计数据需要惊人的 13 分钟。在这 13 分钟期间,对数据库的访问被阻止(或者至少,从这个数据库到我们其他数据库的复制被暂停)。

我的问题是:

我们什么时候应该更新统计数据,为什么?

这似乎是我们应该比每天少做的事情。我试图让我们摆脱“仅仅因为”做不必要的维护的心态。

sql-server performance
  • 2 2 个回答
  • 111318 Views

2 个回答

  • Voted
  1. Best Answer
    Thomas Stringer
    2012-06-13T07:30:20+08:002012-06-13T07:30:20+08:00

    如果您没有它的维护窗口,那么每天更新统计数据可能有点矫枉过正。 特别是如果您为数据库打开了自动更新统计信息。在您原来的帖子中,您说用户看到此维护计划导致性能下降。是否没有其他时间来运行此维护计划?没有其他窗口?我看到你的计划包括索引重组,你什么时候重建索引?当该操作发生时,统计信息会自动更新(前提是没有为索引关闭)。

    您应该多久更新一次统计信息在很大程度上取决于您的索引和数据接收到的数据修改量。如果对数据的修改很少 ( INSERT, UPDATE, DELETE),那么更新统计作业的计划可能会更不频繁。

    找出您的统计数据是否过时的一种方法是查看执行计划,如果您估计的行与返回的实际行有很大差异,那么这很好地表明需要提高间隔。在您的情况下,您将走另一条路,可能需要进行一些试验。每周更新统计数据,如果您开始看到陈旧统计数据的迹象,请从那里开始。

    如果您对数据库使用自动更新统计信息,请参阅此参考以了解何时更新统计信息的阈值。

    • 29
  2. AmmarR
    2012-06-15T01:21:19+08:002012-06-15T01:21:19+08:00

    何时更新统计数据?

    当且仅当自动更新统计功能不足以满足您的要求时。我的意思是,如果自动创建和自动更新统计信息处于打开状态,并且由于统计信息不准确或不最新,您得到了一个错误的查询计划,那么控制统计信息的创建和更新可能是个好主意。但如果您对 sql server 性能和查询执行时间感到满意。

    然后我建议停止维护计划中的更新统计命令

    updating statistics is important and useful 1. allows the SQL Server query optimizer to produce good query plans consistently, while keeping development and administration costs low 2. Statistics are used by the query optimizer to estimate the selectivity of expressions, and thus the size of intermediate and final query results. 3. Good statistics allow the optimizer to accurately assess the cost of different query plans and then choose a high-quality plan


    If you want to do update Statistics manually you should first know When Statistics are updated automatically

    如果 SQL Server 查询优化器需要自上次创建或更新统计信息以来已经历大量更新活动的表中的特定列的统计信息,则 SQL Server 通过对列值进行采样(通过使用自动更新统计信息)自动更新统计信息. 统计信息自动更新由查询优化或编译计划的执行触发,它仅涉及查询中引用的列的子集。如果 AUTO_UPDATE_STATISTCS_ASYNC 为 OFF,则在查询编译之前更新统计信息

    这里有一些不错的文章,讲述了在 SQL Server 中何时触发更新统计信息

    1. 来自 simple-talk第 13 节。何时触发统计信息的自动更新?
    2. support.microsoft部分:自动确定 Autostats
    3. msdn.microsoft部分:在 SQL Server 2008 中维护统计信息

    在知道何时触发统计信息后,它将帮助您决定何时手动更新统计信息

    要了解有关统计数据及其对性能的影响的更多信息,我在 sqlskills非常好的博客和博主中推荐BrentOzar和Kimberly 。

    • 26

相关问题

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve