0

我們擁有一個支持SQL Server後端的.net企業應用程序。.net集成SQL性能分析

現在我們的一些大客戶正在遇到一些基於SQL的性能瓶頸。我們已經應用盡可能多的全球索引,我們可以看到哪些可以提高性能,但是我們不斷吸引客戶推動我們作爲最大用例所經歷的事情,而且沒有什麼可以說這是錯誤的。

這意味着什麼能夠提供查看更大的客戶和爲他們的數據庫提供索引的能力。在這一點上,我只能看到這種情況下可以實現(因爲所有客戶都會以不同的方式使用系統)。

我的想法是以某種方式在客戶數據庫上運行一段時間的SQL事件探查器,然後將此數據抽取到數據庫中的表中,然後在此期間分析數據並應用索引以提高性能。

Enterpise應用程序是asp.net mvc。有誰知道我們是否可以添加.net代碼,將通過連接字符串從asp服務器啓動SQL探查器到數據庫和服務器,然後將結果抽取到表中?

或者我們可以採取其他方法的任何建議?

回答

2

SQL Server Profiler只是一個圖形界面,用於顯示SQL Trace API處理的所有事件。可以通過SQL存儲過程和.Net代碼啓動和捕獲跟蹤數據。 以下是關於如何操作的兩個示例。它有點老,但我已經設法按照說明啓動sql trace throm.net代碼。

http://blogs.msdn.com/b/sqlprogrammability/archive/2006/05/26/receiving-profiler-events.aspx

這裏是由分析器執行啓動追蹤存儲過程的列表。你可以直接運行它們。 http://technet.microsoft.com/en-us/library/ms187346.aspx

0

我不會因爲開銷而推薦以編程方式啓動跟蹤。

相反,從SQL Server獲得接近追蹤質量的數據的開銷更低的方法是計劃高速緩存(也稱爲過程高速緩存)。無論何時將SQL語句傳遞到SQL Server(甚至作爲存儲過程),SQL Server都必須爲該語句構建執行計劃。它將計劃緩存在內存中以避免重複構建它們,並跟蹤每個計劃的使用情況。您可以獲得有關調用次數,CPU運行時間,CPU運行時間以及邏輯讀取次數等信息。

您可以從我們的獨立計劃緩存查詢開始:http://www.brentozar.com/responder/get-top-resource-consuming-queries/如果您想查看哪些查詢正在讀取最多數據,則按邏輯讀取遞減進行排序 - 這些通常是索引編制的最佳候選項。

如果你想更進一步,請查看我的免費sp_AskBrent®。這是一個存儲過程,它接收計劃緩存樣本(加上Perfmon計數器,存儲度量標準等),等待5秒鐘,取另一個樣本,然後比較差異。結果告訴你爲什麼SQL Server現在很慢。

1

正如user907246所述,SQL Profiler只是圖形界面,用於顯示由SQL Server Trace API收集的跟蹤信息,從而可以在線獲取和分析數據。但是,SQL Profiler會在服務器上造成巨大的負載,建議不要在生產環境中啓動。

代替探查的服務器端跟蹤可以被配置和用作這裏(http://technet.microsoft.com/en-us/library/cc293613.aspx)中所述。您可以指定跟蹤文件大小,文件彙總,跟蹤過濾器和其他重要標準。服務器跟蹤,而不是SQL Porfiler的使用可以減少服務器的負載,並允許收集相同的信息卸載分析:工具的大量可用於離線跟蹤觀,恩。 QURE ANALYZER from DBSofic - 免費的產品設計用於不同尺寸的能力組和過濾數據的離線跟蹤分析並找出性能瓶頸。

在此,在SQL Server 2008(http://technet.microsoft.com/en-us/library/bb630354(v=sql.105).aspx)將取代SQL跟蹤在未來的版本中加入了擴展的事件。有關配置和使用擴展事件的其他信息可以在這裏找到:http://blogs.msdn.com/b/extended_events/

-1

您所描述的是SQL Server的Database Engine Tuning Advisor背後的目的。使用SQL Server Profiler運行跟蹤,然後將其用於輸入數據庫引擎優化顧問。如果你真的因爲SQL而遇到瓶頸,那麼它會告訴你。否則,你將不得不開始考慮數據庫和應用程序操作系統上的內存利用率,磁盤IO,CPU%等等。