2012-05-03 71 views
2

我使用SQL Server 2008中我注意到,當我運行一個存儲過程,包括執行計劃,SQL Server將包括一個警告,如果我「失蹤」的指標,並會推薦一個對我來說,爲了增加提高存儲性能。基準SQL Server執行計劃用於自動化測試?

至少對我來說,我認爲這將是有意義的我的自動化測試運行一些我更多的性能密集型存儲過程,然後包括XML的執行計劃。然後,解析XML計劃以查找由SQL Server分發的任何警告或警報。如果遇到任何問題,則認爲這是測試失敗。如果某些查詢成本自上次運行以來顯着增加,我可以更進一步,並且會失敗,但現在我只是保持簡單。

這聽起來像的東西,有人會已經做了,但我沒有看到任何谷歌搜索。這是否是自動化性能測試/基準測試的合理方法,如果有,是否有任何現有的工具或框架可以使這更容易?

感謝,

Tedderz

+1

你見過這個嗎? http://sqlblog.com/blogs/joe_chang/archive/2011/02/06/free-tools-for-sql-server-automating-execution-plan-analysis.aspx –

回答

2

我會反對這項建議。優化器識別的缺失索引非常近視。也就是說,他們不考慮整個系統,並建議可能有利於此查詢的索引,但可能會影響DML的性能。儘管你的心臟在正確的位置,但指數分析更多的是藝術而不是科學(儘管後者可以而且應該告知前者)。

1

反對這個建議是有效的。我已經看到缺失的索引dmv推薦了六個索引,這些索引都是對同一事物的調整。我已經看到它建議添加聚簇鍵作爲包含的列(很奇怪,因爲聚簇鍵總是在索引上)。我見過它推薦已經存在的指標。永遠不要只應用這些指數。我認爲你最好從缺失的索引dmv開始,尋找那些更徹底的調查(高影響等)的指數。然後,查詢導致這些索引被推薦的特效的xml。我很難做到這一點。我們每天刷新我們的計劃緩存,使用9K procs,以及來自傳統應用程序的大量內聯sql,解析xml所花費的時間是有限的。
或者,啓動在proc統計DMV(sys.dm_exec_procedure_stats)和查詢統計DMV(sys.dm_exec_query_stats動態管理)。發現在平均持續時間,CPU和I/O方面最差的特效。檢查缺失索引的子集(並仔細查看查詢本身)。一旦完成,您可以開始查看執行正常的procs /查詢,但執行頻率很高,甚至可以進行小改進有顯着的系統影響。
我每日收集PERF的統計信息,並加載前20最壞特效的彙總表用於一羣不同類別的(總CPU,平均CPU等)。可以很容易地看到proc何時改變其性能以便列出清單,以及查看調整工作在脫落時的影響。