Database的調效面向是又廣又深的,
但一般很難了解到底有全部需要調整哪些(硬碟, CPU, 記憶體, 頻寬, Sql Server參數, T-Sql...).
就算是單單只有T-Sql的部分也是繁複的很,
是調整ddl的設計,還是改進dml的部分!?
光想到要收集所有的Sql指令就很頭大,
還有從程式的ORM語法到實際在Sql Server上執行的T-Sql指令可能相去甚遠,
這篇文章就介紹最常使用的索引調效方式 - Database Engine Tuning Advisor
以下是MSDN對Database Engine Tuning Advisor的介紹,
Database Engine Tuning Advisor 微調功能
Database Engine Tuning Advisor 可以執行下列動作:
-
利用查詢最佳化工具來分析工作負載中的查詢,以建議資料庫索引的最佳混合情況。
-
針對工作負載所參考的資料庫來建議對齊或非對齊的資料分割。
-
建議工作負載所參考之資料庫的索引檢視。
-
分析所提出之變更的效果,其中包括索引用法、資料表之間的查詢分佈,以及工作負載中的查詢效能。
-
建議針對一小組問題查詢來微調資料庫的方式。
-
可讓您指定磁碟空間條件約束之類的進階選項來自訂建議。
-
提供報表來總結針對給定工作負載來實作建議的效果。
-
設想替代方案,讓您以假設性組態的形式來提供可能的設計選項,供 Database Engine Tuning Advisor 進行評估。
最主要就是推薦索引與統計資料,基本不會對已設計好的Schema作出變動,也不會推薦修改查詢語法(當然DTA可能對slow query提出修改索引的建議)
第一步,
使用Sql Profiler記錄Sql Server所執行的T-Sql,(至於要記錄什麼可自行配置或預設)
將錄完的結果存成檔案(*.trc)
第二步
使用Database Engine Tuning Advisor,開啟新的工作階段,並載入檔案,依圖選擇所需.開始分析
分析的結果,可以讓人清楚知道調整哪個建議會得到多少效能的改進,
不過DTA不是萬能的,最好還是大至看過每個建議為好.
如果完全不懂DB卻被指派來調效,那就讓DTA上吧.
參考