用於對執行慢的查詢進行優化

iSQlServer發表於2008-12-22

引起查詢或更新的執行時間超過預期時間的原因有多種。查詢執行慢,可能是由與執行 SQL Server 的網路或計算機相關的效能問題引起的,也可能是由物理資料庫設計問題引起的。

查詢和更新執行慢的常見原因有多種:

網路通訊速度慢。

伺服器的記憶體不足,或者沒有足夠的記憶體供 SQL Server 使用。

索引列上缺少有用的統計資訊。

索引列上的統計資訊過期。

缺少有用的索引。

缺少有用的索引檢視。

缺少有用的資料條帶化。

缺少有用的分割槽。

當查詢或更新花費的時間比預期時間長時,請考慮以下問題,找到可解答前一節中列出的查詢執行慢的原因:

提示:
為了節省時間,請在與技術支援提供商聯絡之前查閱此清單。
 


是與元件而不是與查詢相關的效能問題嗎?例如,是網路效能低的問題嗎?有其他可能引起或造成效能降低的元件嗎?
Windows 系統監視器可用於監視與 SQL Server 和非 SQL Server 相關的元件的效能。有關詳細資訊,請參閱監視資源使用情況(系統監視器)。

如果效能問題與查詢相關,那麼涉及到的是哪個或哪組查詢?
使用 SQL Server Profiler 幫助識別速度緩慢的查詢。有關詳細資訊,請參閱使用 SQL Server Profiler。使用 sys.dm_exec_query_stats 和 sys.dm_exec_requests 動態管理檢視查詢共同消耗大量資源的類似查詢。有關詳細資訊,請參閱使用查詢和查詢計劃雜湊值查詢和優化類似查詢。

如何分析執行慢的查詢的效能?
標識了執行慢的一個或多個查詢之後,可以通過生成顯示計劃來進一步分析查詢效能,該顯示計劃可以是查詢優化器生成的文字、XML 或查詢執行計劃的圖形表示形式。您可以使用 Transact-SQL SET 選項、SQL Server Management Studio 或 SQL Server Profiler 來生成顯示計劃。
有關使用 Transact-SQL SET 選項顯示文字和 XML 執行計劃的資訊,請參閱通過使用 Showplan SET 選項顯示執行計劃 (Transact-SQL)。
有關使用 SQL Server Management Studio 顯示圖形執行計劃的資訊,請參閱顯示圖形執行計劃 (SQL Server Management Studio)。
有關使用 SQL Server Profiler 顯示文字和 XML 執行計劃的資訊,請參閱使用 SQL Server Profiler 事件類顯示執行計劃。
由這些工具收集的資訊使您能夠確定 SQL Server 查詢優化器如何執行查詢以及使用的是哪些索引。利用這些資訊,可以確定通過重寫查詢、更改表上的索引或修改資料庫設計等方法能否提高效能。有關詳細資訊,請參閱分析查詢。

是否已經用有用的統計資訊優化查詢?
SQL Server 自動在索引列上建立對列內值的分佈情況的統計資訊。也可以手動(使用 SQL Server Management Studio 或 CREATE STATISTICS 語句)或自動(如果將 AUTO_CREATE_STATISTICS 資料庫選項設定為 TRUE)在非索引列上建立這些統計資訊。查詢處理器可以利用這些統計資訊來確定最佳的查詢評估策略。在聯接操作所涉及的非索引列上維護附加的統計資訊可以提高查詢效能。有關詳細資訊,請參閱索引統計資訊。
使用 SQL Server Profiler 或 SQL Server Management Studio 內的圖形執行計劃來監視查詢,以確定查詢是否有足夠的統計資訊。有關詳細資訊,請參閱Errors and Warnings 事件類別(資料庫引擎)。

查詢統計是最新的嗎?統計資訊是自動更新的嗎?
SQL Server 自動在索引列上建立並更新查詢統計資訊(只要沒有禁用對查詢統計資訊的自動更新)。另外,也可以手動(使用 SQL Server Management Studio 或 UPDATE STATISTICS 語句)或自動(如果將 AUTO_UPDATE_STATISTICS 資料庫選項設定為 TRUE)在非索引列上更新統計資訊。最新的統計資訊不取決於日期或時間資料。如果尚未執行 UPDATE 操作,則查詢統計資訊仍是最新的。
如果沒有將統計資訊設定為自動更新,請進行設定。有關詳細資訊,請參閱索引統計資訊。

有合適的索引嗎?新增一個或多個索引會不會提高查詢效能?有關詳細資訊,請參閱常規索引設計指南、查詢缺失索引和資料庫引擎優化顧問概述。資料庫引擎優化顧問也可能建議建立必要的統計資訊。

有資料熱點或索引熱點嗎?請考慮使用磁碟條帶化。使用 0 級 RAID(獨立磁碟冗餘陣列)可實現磁碟條帶化,在這種 RAID 上,資料分佈在多個磁碟驅動器上。有關詳細資訊,請參閱使用檔案和檔案組和 RAID。

是否為查詢優化器提供了優化複雜查詢的最有利條件?有關詳細資訊,請參閱查詢優化建議。

如果資料量很大,需要將其分割槽嗎?便於資料管理是分割槽的主要優點,而如果將資料的表和索引進行相似的分割槽,則分割槽還可以提高查詢效能。有關詳細資訊,請參閱瞭解分割槽和優化物理資料庫設計。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-520798/,如需轉載,請註明出處,否則將追究法律責任。

相關文章