SQL Server 數據庫優化方法 (一)

我經常碰到有人會問一些數據庫優化方面的問題,我覺得這是一最基本技能要求,特別是使用sql server 2005,對於sql server的優化,使用的專職dba或兼職dba們工作更輕鬆,效率更高了,但是還是有很多新人可能不大瞭解,我在這兒寫一下最基本的一些介紹。

  我經常碰到有人會問一些數據庫優化方面的問題,我覺得這是一最基本技能要求,特別是使用sql server 2005,對於sql server的優化,使用的專職dba或兼職dba們工作更輕鬆,效率更高了,但是還是有很多新人可能不大瞭解,我在這兒寫一下最基本的一些介紹。

  一、首先介紹一下sql server 2005中優化數據時使用到的兩個工具

  1.第一個工具sql server profile,這個工具在sql server 2000中也有,公司在使用sql 2000數據庫時,我經常使用這個工具,來捕捉那些有性能問題的sql語句。

  sql server profiler 是用於服務器捕獲sql server 2005事件的工具。事件可以保存在一個跟蹤文件中,可在以後對該文件進行分析,也可以在試圖診斷某個問題時,用它來重播某一系列的步驟。

  sql server profiler 可用於以下活動:

  1)逐步分析有問題的查詢以找到出現問題的原因。

  2)查找並診斷運行慢的查詢

  3)捕獲導致某個問題的一系列T-SQL語句,然後用所保存的跟蹤在某臺測試服務器上覆制此問題,接着在測試服務器上診斷問題。

  4)監視SQL SERVER的性能以優化工作負荷

  5)使性能計數器與診斷問題關聯

  使用 SQL Server Profiler時,您可以按“持續時間”、CPU、“讀”或“寫”數據列將跟蹤或跟蹤文件分組來排除數據故障。例如,您可以對性能差的查詢或邏輯讀取操作數特別高的查詢進行數據故障排除。

  通過將跟蹤保存至表和使用 Transact-SQL 查詢事件數據,可以找到其他信息。

  工具界面如圖:

  

2. 第二個工具是sql server 2005中新增加的工具——數據庫引擎優化顧問

  

  數據庫引擎優化顧問用於分析在一個或多個數據庫中運行的工作負荷的性能效果。分析數據庫的工作負荷效果後,數據庫引擎優化顧問會提供在 Microsoft SQL Server 數據庫中添加、刪除或修改物理設計結構的建議。這些物理性能結構包括聚集索引、非聚集索引、索引視圖和分區。實現這些結構之後,數據庫引擎優化顧問使查詢處理器能夠用最短的時間執行工作負荷任務。

  數據庫管理員可以使用數據庫引擎優化顧問進行探索性分析。探索性分析需要綜合使用手動優化和工具輔助優化。若要使用數據庫引擎優化顧問進行探索性分析,需使用用戶指定的配置功能。使用用戶指定的配置功能可以指定優化現有和假設的物理設計結構(如索引、索引視圖和分區)的配置。指定假設結構的好處就是,可以在不用首先實現這些結構的情況下評估它們對數據庫的影響。

  儘管數據庫引擎優化顧問圖形用戶界面 (GUI) 和 dta 命令行實用工具都支持探索性分析,但是 dta 的靈活性更大,因爲它可以使用 XML 輸入文件。XML 輸入文件使用數據庫引擎優化顧問 XML 架構,這是一種已發佈的架構,可以通過訪問數據庫引擎優化顧問架構進行下載。

  探索性分析的兩種模式

  可以使用數據庫引擎優化顧問以下列兩種模式之一執行探索性分析:

  1) 評估模式

  在評估模式中,數據庫引擎優化顧問將相同工作負荷下當前配置的成本 (C) 和用戶指定的配置的成本 (U) 進行比較。因爲 C 由數據庫中當前存在的物理設計結構組成,所以 C 始終是實際配置。相比較而言,U 是由實際和假設的物理設計結構組成的配置。如果數據庫引擎優化顧問報告 U 的成本低於 C 的成本,則 U 的物理設計性能可能優於 C。

  例如,對於下列情況,評估模式是有用的:

  數據庫管理員要確定向表中添加非聚集索引對性能的影響。

  數據庫管理員剛剛完成了使用數據庫引擎優化顧問優化數據庫並接受了建議 (R)。查看 R 後,管理員可能會通過修改 R 對其進行微調。

例如,

  數據庫管理員想要添加兩個非聚集索引並刪除 R 中的一個非聚集索引。修改 R 後,該管理員將修改的 R 作爲輸入發送給數據庫引擎優化顧問,並再次優化以衡量修改後的 R 對性能的影響。

  2) 優化模式

  在優化模式中,數據庫管理員已經知道應該對數據庫物理設計的一部分進行修改,但是希望數據庫引擎優化顧問能夠爲其餘配置提供最佳物理設計結構方面的建議。

  例如,優化模式在以下情況下非常有用:

  數據庫管理員瞭解由於事實數據表過大,因此必須對其進行分區。管理員必須選擇是按月還是按季度分區。可以使用其中任意一種方式對錶進行分區,但管理員希望選擇在給定的工作負荷下能提供最佳性能的分區方法。若要確定最佳分區方法,管理員可以使用數據庫引擎優化顧問兩次化工作負荷。

  首先,管理員通過用戶指定的配置和按月假設分區的表來優化工作負荷。

  然後,使用按季度假設分區的表來優化工作負荷。

  使用兩種假設配置優化工作負荷後,管理員可以通過比較提高的百分比來確定能提供最佳性能的分區方法。

  例如:

  Orders 表必須包含 ship_date 列的聚集索引。數據庫管理員想要確定 Orders 表的一組最佳非聚集索引。通過指定用戶指定的配置(該配置包含 Orders 表中 ship_date 列的聚集索引),數據庫管理員可以部分修改物理數據庫設計。然後可以在優化模式下使用數據庫引擎優化顧問確定用戶指定的配置對性能的影響。

  數據庫引擎優化顧問未優化事件的最常見原因包括:

  1)工作負荷引用了用戶未選擇優化的表。

  2)工作負荷引用的表過小,例如包含的數據頁少於 10 頁的表。

  3)數據庫引擎優化顧問無法在指定時間範圍內優化工作負荷。

  說明:工作負荷是數據庫引擎優化顧問的分析對象,它由要優化的一個或多個數據庫執行的一組T-SQL語句構成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章