您好,登錄后才能下訂單哦!
這篇文章主要介紹“Sqlserver關于統計信息自動創建自動更新的知識點有哪些”,在日常操作中,相信很多人在Sqlserver關于統計信息自動創建自動更新的知識點有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Sqlserver關于統計信息自動創建自動更新的知識點有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
SSMS右鍵數據庫--Properties--Options--Automatic下面會出現和統計信息相關的幾個選項,和sys.databases視圖的is_auto_create_stats_on,is_auto_create_stats_incremental_on,is_auto_update_stats_on,is_auto_update_stats_async_on這幾個字段一一對應
AUTO_CREATE_STATISTICS
在自動創建統計信息選項 AUTO_CREATE_STATISTICS 為 ON 時,查詢優化器將根據需要在查詢謂詞中的單獨列上創建統計信息,以便改進查詢計劃的基數估計。這些單列統計信息在現有統計信息對象中尚未具有直方圖的列上創建。 AUTO_CREATE_STATISTICS 選項不確定是否為索引創建了統計信息。 此選項也不生成篩選統計信息。 它嚴格應用于全表的單列統計信息。
查詢優化器通過使用 AUTO_CREATE_STATISTICS 選項創建統計信息時,統計信息名稱以 _WA 開頭。 可以使用下面的查詢來確定查詢優化器是否為查詢謂詞列創建了統計信息。
SELECT OBJECT_NAME(s.object_id) AS object_name,
COL_NAME(sc.object_id, sc.column_id) AS column_name,
s.name AS statistics_name
FROM sys.stats AS s
INNER JOIN sys.stats_columns AS sc
ON s.stats_id = sc.stats_id AND s.object_id = sc.object_id
WHERE s.name like '_WA%'
ORDER BY s.name;
AUTO_UPDATE_STATISTICS
在自動更新統計信息選項 AUTO_UPDATE_STATISTICS 為 ON 時,查詢優化器將確定統計信息何時可能過期,查詢優化器通過計算自最后統計信息更新后數據修改的次數并且將這一修改次數與某一閾值進行比較,確定統計信息何時可能過期。 該閾值基于表中或索引視圖中的行數。
SQL Server 2014 (12.x),SQL Server 基于更改行的百分比使用閾值。 這與表中的行數無關。 閾值是:
如果在評估時間統計信息時表基數為 500 或更低,則每達到 500 次修改時更新一次。
如果在評估時間統計信息時表基數大于 500,則每達到 500 + 修改次數的百分之二十時更新一次。
SQL Server 2016 (13.x) 開始,如果數據庫兼容性級別為 130,SQL Server 將使用遞減的動態統計信息更新閾值,此閾值將根據表中的行數進行調整。 它的計算方式為 1000 與當前的表基數乘積的平方根。 例如,如果表中包含 200 萬行,則計算為 sqrt (1000 * 2000000) = 44721.359。 進行此更改后,將會更頻繁地更新大型表的統計信息。 但是,如果數據庫的兼容性級別低于 130,則適用 SQL Server 2014 (12.x) 閾值。
AUTO_UPDATE_STATISTICS_ASYNC
異步統計信息更新選項 AUTO_UPDATE_STATISTICS_ASYNC 將確定查詢優化器是使用同步統計信息更新還是異步統計信息更新。 默認情況下,異步統計信息更新選項為 OFF 狀態,并且查詢優化器以同步方式更新統計信息。
到此,“Sqlserver關于統計信息自動創建自動更新的知識點有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。