SQL Server: 有效的查詢微調

著重於查詢微調,真正最佳化您的 SQL Server 效能並有效管理工作負載。

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

Glenn Berry、 路易 Davidson 和 Tim Ford

查詢微調是核心和靈魂的 SQL Server 效能最佳化。 如果在一般工作量所包含的格式不設計或是效率極低的查詢,您會遇到效能及延展性的問題。 如果您的查詢更長的時間,更多且更多複雜的非必要時,它們會耗用較多的 CPU 資源,在執行期間。

因此,它們也會較長的時間執行。 不合而設計的查詢,連同失敗,以進行適當地使用索引,會導致讀取超過所需的 SQL Server。 這將導致明顯的延隔時間的效能和執行時間。

如果 SQL Server 會從緩衝區快取中讀取資料,它被指邏輯 I/O。 這可能是昂貴的作業,從效能觀點來看。 如果資料不在記憶體,並從磁碟讀取的需求 (或資料以便隨時寫),這會是實體 I/O,而且很更昂貴。

大小是個問題

如果您有多個查詢會傳回大量的資料,則可能導致在緩衝區快取的記憶體壓力。 這將導致 SQL Server 清除資料從快取中,依序將會影響其他查詢的效能。

「 黃金定律 」 的設計完善的 SQL 查詢會傳回沒有更多的資料量超出您真正需要。 您必須先通過越少次越好的資料,並使用集合架構的邏輯,來管理該資料,您需要在結果集的 SQL Server。

剖析和最佳化 SQL 陳述式並不是""高的並行處理 」 作業。 SQL Server 會將先前執行的查詢計劃儲存在名為 「 計劃快取共用的記憶體區域。 每當您提交的查詢執行時,SQL Server 會檢查來查看是否可以使用現有的計劃來執行查詢計劃快取。 每次找不到相符的項目,然後剖析、 最佳化並產生送出的查詢計劃。 這是需要大量 CPU 的處理程序。

此外,這種做法,每次 SQL Server 取得閂鎖,若要保護的記憶體相關的區域和其他更新的計劃快取。 更臨機操作、 非參數化的 SQL Server 查詢表示快取中的多個單一使用計劃。 這會轉譯為在剖析期間的較大消耗的 CPU 資源,並取得閂鎖。 它最後會導致不可調整的系統。 設計良好的 SQL 查詢將升級計劃重複使用率 ("一次剖析,多次使用") 的最大的可能範圍。

設計,含有在心的時間

最後,如果您的工作負載是由設計不良的查詢所組成,它就會造成不必要的 I/O 作業。 您的 CPU 和記憶體負荷會無法運作,並執行時間將會很緩慢。 這種情況會惡化隨著使用者人數的增加。 會強制要求,等待正確設計的查詢正在獨占共用資源的存取權。

相反地,如果您可以將您需要完成特定工作的個別 SQL 陳述式數目降到最低,然後您也可以化每個個別 SQL 陳述式所完成的工作。 你很有可能有一個快速的回應 SQL Server 系統,此功能可調整的使用者數目為依正常程序和整體的工作負載變大。

效能調整常用的方法是擷取 「 十大排行榜 」 的清單,構成標準模式、 每日工作負載,您的 SQL Server 執行個體的一部分,且再調整這些項目,一個接一個最慢的查詢。 追蹤工作階段、 要求及查詢 SQL Server 基礎結構中的最大量的資源,並採取最長的時間來執行。

較低的層級,尋找 SQL Server 發生資源壓力的特定區域可能啟動稍微更合乎科學的方法。 檢查,以判斷是否在等待處理程序異常長時間的其他動作,完成後,再繼續。 如此一來,您可以找出是否較慢的執行時間的主要元件是 CPU 時間 (如果系統 CPU 繫結) 或一次所花費的等候 i/o (如果系統是 I/O 繫結),並儲存在那個欄位。

您可以再處理上一步是從該處造成資源競爭的要求。 有隔離問題查詢,您接下來可以尋找可減少網際網路所執行的工時量。 這通常涉及微調您的 SQL 陳述式和查詢,或新增索引。 如果所有方法都失敗,您可以增加容量是購買更大的記憶體/磁碟/CPU 能力。

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 MVP 六年來,而且已寫入的四個方面的書籍資料庫設計。 目前,他是資料架構設計人員和有時 DBA 基督廣播網路,支援維吉尼亞州堤,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

相關內容