在幫助優化器選擇正确的執行計劃,統計資訊是一個重要因素。是以,我們在處理性能問題時,要足夠重視統計資訊。可能是對統計資訊知識及其相關機制的缺乏,忽略統計資訊往往是造成性能問題的根源。
查詢優化器在每一步使用統計資訊判斷傳回的行數。在執行計劃裡的預估行數資訊是基于列上的可用統計資訊計算而來的。統計資訊會給我們列上資料分布資訊。沒有統計資訊,查詢優化器不能判斷不同計劃的效率。通過使用統計資訊裡的内容,查詢優化器在通路資料的時候就可以做出正确選擇。
在SQL Server裡存儲的統計資訊包括密度和直方圖:
- 密度向量:密度是給出列(或一組列)裡唯一值的比率。了解統計資訊(1/6):密度向量
- 直方圖:直方圖是統計資訊裡第一列的資料分布詳情。了解統計資訊(2/6):直方圖
有2類統計資訊,索引統計資訊和列統計資訊。在表上定義索引時,索引統計資訊會自動建立。列統計資訊總是在單列,當在查詢裡列被引用時,列統計資訊會自動建立。為了自動建立列統計資訊,在資料庫屬性裡可以将自動建立統計資訊設定為啟用。在了解統計資訊(3/6):誰建立和管理統計資訊?在性能調優中,統計資訊的作用裡我們詳細讨論了統計資訊是如何建立的,自動更新和建立統計資訊是如何工作的,過期的統計資訊如何影響我們的性能。
在表裡發生合理的變化後,SQL Server會自動更新統計資訊。這裡有個閥限值來觸發自動更新統計資訊。預設的閥值對最優性能是否足夠好?我們真的需要通過人為更新統計資訊來幹預自動更新統計資訊麼?看看了解統計資訊(4/6):自動更新統計資訊的閥值——人為更新統計資訊的重要性就知道答案了。
在SQL Server 2005和SQL Server 2008裡,辨識統計資訊是否需要人為更新是個很困難的事,了解統計資訊(5/6):如何檢測過期的統計資訊可以給你一些如何開始的想法。
額外贈送統計資訊内幕:直方圖和密度向量。
注:此文章為
WoodyTu學習MS SQL技術,收集整理相關文檔撰寫,歡迎轉載,請在文章頁面明顯位置給出此文連結!
若您覺得這篇文章還不錯請點選下右下角的推薦,有了您的支援才能激發作者更大的寫作熱情,非常感謝!