• SQL Server 的 Statistics 簡介


    當你要清空「資料表(table)」,或倒入大量「資料(data;record)」,或公司「資料庫(database)」改用新版本要資料大搬家…等情形,不只是要重建「索引(index)」,還應要重建或更新「統計(statistics)」。「統計」的正確與否,直接牽動 SQL Server 的「效能(performance)」。沒有「統計」固然不好,「統計」若過時,會讓最佳化程式做出錯誤的決定則更糟。

    SQL Server 的查詢最佳化程式,會用索引的「統計」,來獲得它所需要的「資訊(information)」,以決定某個索引是否有用處。

    如果某個用在搜尋的「欄位(column)」,我們沒有事先為它建立索引,則 SQL Server 會自動為該欄位建立「統計」。自動建立的「統計」會以 _WA_Sys 開頭來命名,如下圖 1。


    圖 1

    ----------------------------------------------------------------------------------------------------------

    手動更新「統計」:

    透過 CREATE STATISTICS 指令,可針對未建立索引的欄位,直接產生「統計」資訊,也可透過 sp_createstats 系統「預存程序(stored procedure)」,直接將某個資料庫內的「所有」資料表,全部的欄位都建立「統計」資訊。
    http://msdn.microsoft.com/zh-tw/library/ms188038.aspx
    http://msdn.microsoft.com/zh-tw/library/ms186834.aspx
    (hyperlink 若無法連結,可將 zh-tw 改為 zh-cn 再重試)

    執行 UPDATE STATISTICS 指令,可要求某個資料表,或是直接指定索引或「統計」來做更新,而 sp_updatestats 系統預存程序,可針對特定資料表,把所有相關的統計進行更新。
    http://msdn.microsoft.com/zh-tw/library/hh510198.aspx
    http://msdn.microsoft.com/zh-tw/library/ms187348.aspx
    http://msdn.microsoft.com/zh-tw/library/ms173804.aspx

    一般來說,我們會依靠「自動更新統計」,但有些特殊情況下,可能會希望立即「手動」更新「統計」,例如 :

    * 該資料庫的用途為「資料倉儲(data warehouse)」,平常不會有個別的資料更新,僅有批次更新。在批次更新完資料後,需要立即執行統計的更新。

    * 索引中的鍵值,有大量的新增、修改或刪除,而你又確定接下來的運作,會立刻用到索引。

    * 透過 TRUNCATE TABLE 清空某個資料表後,重新輸入或倒入資料,也就是資料內容已經完全不同了,但你又需要立即「存取(access)」該資料表。

    ----------------------------------------------------------------------------------------------------------

    自動更新「統計」:

    可透過圖形管理介面,在「資料庫屬性」視窗中,切到「選項」頁籤,如下圖 2。


    圖 2

    -----------------------------------------------------------------------------------------------------------

    透過圖形介面的「統計」資料,看是否有 _WA_Sys 開頭來命名的「統計」,也可看出有哪些欄位,曾被應用程式用來搜尋,卻沒有事先建立可用的相關索引。

    -----------------------------------------------------------------------------------------------------------

    用指令瞭解「統計」資料 DBCC SHOW_STATISTICS(資料表名稱, 索引名稱或欄位名稱)
    http://msdn.microsoft.com/zh-tw/library/ms174384.aspx

    Density(密度),越低越好,較低的索引密度,表示此索引較具「辨識度」。當密度越接近 1,代表此索引越不具辨識度,查詢最佳化工具也就越不願意使用此索引。也代表此索引的存在,對查詢沒幫助,只會影響寫入資料的效能。

    有關介紹「統計」的書籍,一些有介紹「資料庫效能」的書籍,多半都會提到。但以章立民先生,在 2008 年寫的下列這本書「SQL Server 2005 效能調校經典」(繁體中文),內容最完整和詳細,對於上圖 2 裡的「自動 非同步(asynchronous)更新統計資料」,此書也有詳細的解釋。但此書因年代久遠,在台灣已絕版 :
    http://www.tenlong.com.tw/items/986181339X?item_id=37625
    SQL Server 2005 效能調校經典 (Microsoft SQL Server 2005 Unleashed)
    ISBN: 986181339X
    ISBN-13: 9789861813394

    -----------------------------------------------------------------------------------------------------------

  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/WizardWu/p/4052951.html
Copyright © 2020-2023  润新知