SQL Server: 使用動態管理物件

動態管理物件可協助您管理和監視 SQL Server 中的工作負載詳情,而這是微調效能時不可或缺的資料。

如從"SQL Server DMV 入門套件 」 發行的紅色門書籍 (2010)。

Glenn Berry、 路易 Davidson 和 Tim Ford

動態管理物件 (DMOs) 是一組儲存在系統結構描述中的 SQL Server 物件。 它們都提供視窗到不同的 SQL Server 執行個體,並使用這些活動的資源上執行的活動。

換句話說,DMOs 會公開有關連線、 工作階段、 交易、 SQL 陳述式和執行對資料庫執行個體,結果如何散發、 壓力點是等等的地方,在伺服器上,產生的工作負載的處理程序的重要資訊。 具有所顯示的特定瓶頸或壓力點,就可以採取適當步驟,以減輕問題,可能藉由調整 [查詢],新增索引,或只刪除 [封鎖的工作階段。

「 動態 」 一詞指的是儲存在 DMOs 中的資訊動態產生從大範圍的檢測點的事實。 這些都是 SQL Server 引擎在記憶體中的結構。 這項資料則是 sys 資料庫結構描述中的表格形式公開。 資料會公開在檢視中、 在這種情況下,它們指動態管理檢視 (Dmv),或資料表值函式,在這種情況下它們指動態管理功能 (DMFs)。

Dmv 和 DMFs 是基本上系統檢視] 和 [系統函式。 您可以使用任何其他的檢視和 SQL Server 中的函式一樣來使用它們: 查詢它們、 加入、 傳遞參數,以及最後傳回單一結果集,其中包含您要調查特定議題的狀態或 SQL Server 執行個體的健康情況的相關資料。

效能調整與 Dmv

DMOs 公開 (expose) 資訊的有時 dizzying 陣列。 原始的 sysprocesses 系統檢視基本上被 de-normalized,並已加入許多新的 DMOs。 許多新的資料行現在可供查詢。 當資料庫引擎會變成更檢測,引擎和目前的工作,工作的相關的可用的資料量會持續不斷增長。

增加的複雜性的訂一起不同的 DMOs,陣列中的資料搭配一開始 baffling 選項將出現的資料行的位置公開,已導致某些以 liken 查詢 DMOs 收集神法術 Dba。

不過,de-normalization 處理程序,在許多方面,更加容易分析及了解 DMOs,傳回的資料。 一旦您開始撰寫您自己的指令碼,您會看到相同的技巧和類似的聯結模式,使用次又一次。 因此,一組相對較小的核心的指令碼可以容易地應用於符合許多的需求。

在某些方面,您需要剝除後的層級的處理程序工作透過 DMOs 診斷的資料。 在外部層級中,我們可以找出誰在連接到我們的 SQL Server 執行個體與它們連線的方式。 工作階段正在執行對物件。 與所要求執行這些工作階段。 我們可以找出由這些要求,正等它們執行的查詢計劃所執行的 SQL 陳述式的詳細資料。

下圖層的卸除,我們有交易層級,在我們可以找出拘留人質何種鎖定這些交易的結果,請檢查任何可能會封鎖,以此類推。 往另一層,我們就可以找到由 [送出要求的工作負載會將轉譯成在作業系統中的實際工時。 我們可以判斷,例如:

  • 哪些實際的工作 (執行緒) 被執行以滿足要求
  • 他們正在執行哪些工作的 I/O、 CPU 和記憶體使用量
  • I/O 分散在不同的檔案的方式
  • 如何長執行緒花在等待時,無法繼續執行,以及為什麼

是您的工作來組合的資料的所有項目從各種不同的圖層,提供系統中反白顯示特定問題所需的結果。

在 vs 時間點。 累計

如所述,我們可以查詢只儲存在 DMOs 資料像我們一樣的任何其他表格時,檢視或函式。 但是,永遠記得您看見的資料是 「 動態 」 性質。 它是從各種不同的結構,資料庫引擎中收集,代表在時間點快照 」 之前在時間發生在您的伺服器上的活動執行 DMO 查詢。

有時候,這正是您想要的項目。 您可以發出,而且想要找出查詢可能導致它在伺服器上的執行效能。 有時候,不過,您可能會發現它很難查詢問題將只是 「 看您。"希望這些時間點 DMOs 中的資料

如果比方說,您會遇到效能問題,並想要檢查有任何 「 特殊 」 的鎖定模式,然後也不太可能 [請選取 [欄] [鎖定擷取 DMV]] 會告訴您許多,除非您是非常熟悉既有何種 「 一般 」 鎖定看起來就像您系統上,您可以輕鬆地找出異常情況。

熊記住的時間點的資料可以很可能會變更每次查詢,為伺服器變更的狀態。 您應該偶爾異常或非代表結果,您可能需要取得,則為 true 的活動執行個體上執行指令碼的次數。

在其他情況下,DMOs 是累積的。 換句話說,資料中給定的資料行是累加以及遞增每次特定事件發生。 例如,每次工作階段等待一段時間,才能使用資源,這會記錄在 sys.dm_os_wait_stats DMV 的資料行。 當查詢擷取 DMV,您所見,比方說,總工時量等待各種資源,跨所有的工作階段,SQL Server 是啟動或重新啟動之後,除非資料庫一致性檢查,或是 DBCC,執行命令來手動清除的預存的統計資料。

雖然這會讓您已經花費時間的一般概觀等待一段很長,這能讓您無法看到較小的詳細資料。 如果您想要測量的資料庫 (新的索引,例如) 的特定變更的影響,您將需要一個基準測量,進行變更並再計算的差異。

最後,永遠記住,大部分您看見這類 DMOs 中的資料是跨多工作階段、 多的要求和許多交易所收集的彙總資料。 先前所述的 wait_stats DMV,例如,將告訴您在執行個體層級的 SQL Server 所花費時間等候,彙總跨所有工作階段。 您無法在個別的工作階段層級追蹤的等候時間,除非當然,您正在使用獨立的伺服器。

Glenn Berry

Louis Davidson

Tim Ford

Glenn Berry 為資料庫架構設計人員在丹佛舉行,Colo.NewsGator 技術的運作方式 他是 SQL Server 的類似 MVP,而且 Microsoft 認證,包括 MCITP、 MCDBA、 MCSE、 MCSD、 MCAD 及 MCTS,證明他自己想要測試的整個集合。

路易 Davidson 已經在 IT 產業 16 年為公司的資料庫開發人員和架構設計人員。 他已 SQL Server 的 Microsoft MVP 六年,而且已撰寫寫過四本書,資料庫設計。 他目前是資料架構設計人員,有時 DBA 基督廣播網路,在 Virginia 堤,Va.和 Tenn.聖路易斯,支援辦公室

Timothy Ford 是 SQL Server MVP 和以來就使用 SQL Server 10 年以上。 他是主要 DBA 與主題專家頻譜狀況 SQL Server 平台。 他已經撰寫相關技術自 2007年各種不同的網站並維護自己的部落格,在 thesqlagentman.com,也一樣 telecommuting 且專業開發主題涵蓋 SQL。

深入了解 「 SQL Server DMV 入門套件 」 在 red-gate.com/our-company/about/book-store

相關內容