Sql server SQL Server统计信息中到底保存了什么?什么时候更新?SQL Server本身正在处理这些问题吗?

Sql server SQL Server统计信息中到底保存了什么?什么时候更新?SQL Server本身正在处理这些问题吗?,sql-server,sql-server-2008,sql-server-2005,statistics,sql-execution-plan,Sql Server,Sql Server 2008,Sql Server 2005,Statistics,Sql Execution Plan,我作为一名开发人员一直在使用SQL Server 我学到的一件事是SQLServer管理统计数据,这有助于引擎创建优化的执行计划 我搞不清楚统计数据中的商店到底是什么?(我读到它保存向量,但什么向量?) SQL Server何时/在哪种情况下更新统计信息 它们如何/为什么有时会不同步(旧统计) 如果是旧的统计数据,则需要DBA/开发人员手动干预,否则SQL Server将更新这些数据 作为一名DBA/开发人员,如何发现统计信息是否陈旧?我们应该怎么做?在本文中,指的是RDBMS对给定索引的值进行

我作为一名开发人员一直在使用SQL Server

我学到的一件事是SQLServer管理统计数据,这有助于引擎创建优化的执行计划

我搞不清楚统计数据中的商店到底是什么?(我读到它保存向量,但什么向量?)

SQL Server何时/在哪种情况下更新统计信息

它们如何/为什么有时会不同步(旧统计)

如果是旧的统计数据,则需要DBA/开发人员手动干预,否则SQL Server将更新这些数据

作为一名DBA/开发人员,如何发现统计信息是否陈旧?我们应该怎么做?

在本文中,指的是RDBMS对给定索引的值进行的采样。粗略地说,这为引擎提供了值分布的概念,并帮助它规划高效的查询。您可以使用查看统计集的实际内容

随着时间的推移,索引的统计数据可能会过时,因为表中的数据以及索引值的分布会发生变化。这可能会导致查询执行计划不够理想,这就是为什么您应该将统计信息保持为最新状态的原因

您可以使用T-SQL命令手动更新统计信息,或将其设置为自动更新。从第一个MSDN链接:

当“自动更新统计信息”选项“自动更新统计信息”处于启用状态时,查询优化器将确定统计信息何时可能过期,然后在查询使用统计信息时进行更新

在此上下文中,指RDBMS对给定索引的值进行的采样。粗略地说,这为引擎提供了值分布的概念,并帮助它规划高效的查询。您可以使用查看统计集的实际内容

随着时间的推移,索引的统计数据可能会过时,因为表中的数据以及索引值的分布会发生变化。这可能会导致查询执行计划不够理想,这就是为什么您应该将统计信息保持为最新状态的原因

您可以使用T-SQL命令手动更新统计信息,或将其设置为自动更新。从第一个MSDN链接:

当“自动更新统计信息”选项“自动更新统计信息”处于启用状态时,查询优化器将确定统计信息何时可能过期,然后在查询使用统计信息时进行更新


您可以查看您的统计信息是否是最新的:

select  object_name(ind.object_id) as TableName
,       ind.name as IndexName
,       stats_date(ind.object_id, ind.index_id) as StatisticsDate
FROM    sys.indexes ind
order by 
        stats_date(ind.object_id, ind.index_id) desc

您可以查看您的统计信息是否是最新的:

select  object_name(ind.object_id) as TableName
,       ind.name as IndexName
,       stats_date(ind.object_id, ind.index_id) as StatisticsDate
FROM    sys.indexes ind
order by 
        stats_date(ind.object_id, ind.index_id) desc

1.没有索引的表将不维护统计信息?2.当插入/更新发生时,SQL Server本身会更新统计信息吗?3.作为DBA/开发人员,如何发现统计数据是否过时?4.更新统计数据时,表是否被锁定?@Pritesh 1。对,2。如果“自动更新”处于启用状态,请更正,3。我不确定,但我认为谷歌可以在这方面帮助你。您可以使用自动更新统计信息异步1异步更新统计信息。没有索引的表将不维护统计信息?2.当插入/更新发生时,SQL Server本身会更新统计信息吗?3.作为DBA/开发人员,如何发现统计数据是否过时?4.更新统计数据时,表是否被锁定?@Pritesh 1。对,2。如果“自动更新”处于启用状态,请更正,3。我不确定,但我认为谷歌可以在这方面帮助你。您可以使用自动更新统计信息异步更新统计信息假设统计信息日期(ind.object\u id,ind.index\u id)值落后4小时,但我们如何确定是否需要在过去4小时内更新统计信息?4小时可以,我们每周更新一次统计信息。您不需要更频繁地更新它们。假设stats\u date(ind.object\u id,ind.index\u id)值落后4小时,但我们如何确定是否需要在过去4小时内更新统计数据?4小时可以,我们每周更新一次统计数据。您不需要更频繁地更新它们。