Sql-Server

在 SQL Server 中禁用自動統計

  • June 6, 2016

我對 SQL Server 中的自動統計有幾個問題:

  1. 我知道我可以使用以下語句來檢查數據庫自動統計是否被禁用,但是是否有語句來檢查特定索引的自動統計是否被禁用?
SELECT DATABASEPROPERTYEX('Databasename','IsAutoUpdateStatistics')
  1. 如果我在重組作業之前禁用索引的自動統計,它會阻止 SQL Server 中的阻塞問題嗎?

在以下連結中,您可以在數據庫級別禁用自動統計資訊https://msdn.microsoft.com/en-us/library/ms188775.aspx

是否有檢查特定索引的自動統計是否被禁用的語句?

您可以使用sys.sp_autostatssys.stats來獲取此資訊。

sys.sp_autostats也可用於啟用或禁用特定統計對象的自動更新。

例如,使用AdventureWorks 範例數據庫

EXECUTE sys.sp_autostats 
   @tblname = N'[Production].[TransactionHistory]',
   @flagc = NULL,
   @indname = NULL;

AUTOSTATS列顯示統計資訊是否會自動刷新:

sp_autostats 輸出

SELECT
   S.name,
   S.stats_id,
   S.auto_created,
   S.user_created,
   S.no_recompute
FROM sys.stats AS S
WHERE
   S.[object_id] = OBJECT_ID(N'[Production].[TransactionHistory]', N'U');

no_recompute列顯示是否將跳過自動統計資訊更新:

sys.stats 輸出

如果我在重組作業之前禁用索引的自動統計,它會防止阻塞問題嗎?

重組索引不會更新統計資訊。您可能需要澄清您的問題以解釋您遇到的確切問題。

引用自:https://dba.stackexchange.com/questions/140357