数据库-统计信息相关资料
前言:最近數據庫突然變得卡頓,查看了相關日志后,推測可能是索引碎片以及統計信息的問題,索引碎片很久之前已經寫了個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) 上不能建統計信息。
?這樣的維護策略能夠保證花費比較小的代價,確保統計信息基本正確。后面會有安例,反映這個維護策略在數據分布特殊的表上,也有可能造成一些負面的影響。
何時創建統計信息
查詢優化器已經通過以下方式創建統計信息:
查詢優化程序在創建索引時為表或視圖上的索引創建統計信息。這些統計信息是在索引的鍵列上創建的。如果索引是篩選索引,則查詢優化程序會針對篩選索引指定的相同行子集創建篩選統計信息。有關篩選索引的詳細信息,請參閱創建篩選索引和CREATE INDEX(Transact-SQL)。
當AUTO_CREATE_STATISTICS打開時,查詢優化程序為查詢謂詞中的單個列創建統計信息。
對于大多數查詢,這兩種創建統計信息的方法可確保高質量的查詢計劃;?在少數情況下,您可以通過使用CREATE STATISTICS語句創建其他統計信息來改進查詢計劃。這些附加統計信息可以捕獲查詢優化程序在為索引或單列創建統計信息時不會考慮的統計關聯。您的應用程序可能在表數據中具有其他統計相關性,如果計算到統計對象中,則可以使查詢優化程序能夠改進查詢計劃。例如,對查詢謂詞列的數據行子集或多列統計信息的篩選統計信息可能會改進查詢計劃。
使用CREATE STATISTICS語句創建統計信息時,建議保持AUTO_CREATE_STATISTICS選項,以便查詢優化器繼續定期為查詢謂詞列創建單列統計信息。有關查詢謂詞的詳細信息,請參閱搜索條件(Transact-SQL)。
當滿足以下任何條件時,請考慮使用CREATE STATISTICS語句創建統計信息:
- 數據庫引擎優化顧問建議創建統計信息。
- 查詢謂詞包含多個不在同一索引中的相關列。
- 查詢從數據子集中進行選擇。
- 該查詢缺少統計信息。
詳細的信息可參考:SQL文檔-統計信息
?
轉載于:https://www.cnblogs.com/9284chc0r0ij/p/10999382.html
總結
以上是生活随笔為你收集整理的数据库-统计信息相关资料的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工单系统的设计与实现(3)
- 下一篇: linux cmake编译源码,linu