2008-10-02 52 views
4

我想調整生產SQL服務器。進行調整後(如更改並行度),我想知道它是否有助於或損害查詢執行時間。是否有平均執行時間的SQL服務器性能計數器?

這似乎是一個明顯的性能計數器,但在過去的半小時中,我一直在使用perfmon搜索Google和計數器列表,並且我一直無法找到SQL服務器的性能計數器來給我一個平均值執行時間爲所有查詢命中服務器。 SQL Server與ASP.NET請求執行時間等效。

是否存在我遺失的?有沒有另一種有效的方式來監控服務器的平均查詢時間?

回答

0

平均在什麼時間和哪些查詢?你需要進一步定義你的意思是「平均」還是沒有意義,這可能是爲什麼它不是一個簡單的性能計數器。

你可以通過運行一個跟蹤,捕獲到表捕獲此信息,然後你可以在許多方面一個切片和切塊的執行時間。

+0

「所有查詢命中服務器」,如在所有查詢中。 :-)無論您在PerfMon中設置的時間段是什麼(默認值爲100秒)。 SQL跟蹤是一個很好的建議,雖然我希望更容易一些。 – jwanagel 2008-10-02 20:01:50

1

您可以使用查詢分析器(這是與SQL Server的工具之一),看看它們是如何內部執行,因此您可以優化索引等,這不會告訴你的平均值,或往返回客戶端。爲此,您必須將其登錄到客戶端並自行分析數據。

0

它不給你究竟需要什麼,但我會強烈建議嘗試SQL Server 2005的性能儀表板報告,可下載here。它包括前20個查詢的報告和他們的平均執行時間以及許多其他有用的查詢(IO的頂級查詢,等待統計數據等)。如果您確實安裝了它,請務必記下它的安裝位置並按照附加信息部分中的說明進行操作。

0

探查會給你查詢執行時間和活動在服務器上的統計信息。總體查詢時間可能並不意味着將它們綁定到特定的作業和查詢計劃。

性能瓶頸的其他指標是資源競爭計數器(一般統計數據,插銷,鎖)。你可以通過性能計數器看到這些。同時尋找大量的不使用索引的表掃描或其他操作可以給你一個指示,指示可能是必要的。

在一個負載的服務器增加並行不太可能產生重大影響,因爲已經在任意給定時間活躍許多查詢的性能。如果並行性讓您獲勝,那麼很少運行大批量作業,如ETL過程。如果你需要減少這樣一個過程的運行時間,那麼並行可能是一個好看的地方。在繁忙的服務器上與許多用戶進行事務性工作負載時,系統資源將因工作負載而忙碌,因此並行性不太可能是一個巨大的勝利。

4

我不相信有一個性能監視器,但有SQL Server Management Studio中內提交報告:

右鍵單擊數據庫,選擇報告>標準報告>對象執行統計。這將給你幾個非常好的統計數據,包括數據庫中運行的內容,需要多長時間,需要多少內存/ Io處理等。

也可以在服務器級別跨所有數據庫運行此操作。

1

我設法通過將跟蹤保存到SQL來完成它。當跟蹤打開時

File>Save As>Trace Table

選擇SQL,而一旦其進口來看

select avg(duration) from dbo.[YourTableImportName] 

你可以非常容易地進行其他統計資料,最大值,最小值,計數等。 。詢問追蹤結果的更好方法

+0

+1不錯的方法。儘管在SQL中應該是avg()而不是平均值 – geographika 2011-07-15 22:39:10

0

您可以使用活動監視器。它內置於SSMS中。它將爲您提供對服務器上所有當前昂貴查詢的實時跟蹤。

要打開活動監視器

  1. 在SQL Server Management Studio中(SSMS),右鍵單擊該服務器,並選擇活動監視器
  2. 打開最近昂貴查詢看CPU使用率,平均查詢時間等

希望有所幫助。