2012-07-18 86 views
-1

觀察運行查詢的性能,特別針對大型數據插入或類似查詢。觀察SQL正在運行的查詢

作爲一個例子:

,如果你要選擇,插入關於數百萬條記錄

一個很簡單的查詢可以是一個選項有什麼使用倒計時高性能定時器選項查看每條記錄有多少時間?

基於代碼的實踐或基於工具的實踐

你有什麼建議?

任何關於這些信息的讚賞。

+0

@DarkXphenomenon:你的計數能力發生了什麼 – Razvan 2012-07-18 19:36:15

+0

可能有一些工具或技術是針對整個想法的,因爲我注意了是否有一個通用的解決方案,另一方面是一些實踐關於尋找執行流程的表現是我們正在尋找的更具體的目標。例如,如果我再次提到日誌,我的意思是與性能相關的日誌或執行流程。 – Sypress 2012-07-18 19:39:02

回答

2

您可能無法分析每個1k記錄需要多長時間插入,除非您構建一個機制以向您的查詢提供反饋。即你可以做一個循環,並以1k條記錄的形式進行批處理,或者你可以定期從另一個線程中選擇語句來對錶進行計數並查看差異,儘管我對該方法的嘗試並不總是完美。

如果你想要一個比SQL Server自帶的更好的分析器(在我看來),你可以在這裏免費獲得一個:http://anjlab.com/en/projects/opensource/sqlprofiler。關於這個分析器的好處在於,你可以對結果進行排序,因爲它們還在進入,這是微軟的分析器所無法做到的。在我上一份工作中,我用了很多東西來確定應用程序中我們沒有緩存數據的地方,並且不必要地一遍又一遍地運行相同的查詢。

+0

我應該同意你的邏輯,因爲我會在編碼時做同樣的事情,你可以在sql中對這種觀察提供一個簡單的基於模式的代碼。 – Sypress 2012-07-18 19:50:36

+2

+1:IIRC,像INSERT和SELECT這樣的SQL操作本質上是原子的 - 它們要麼發生要麼它們不發生。如果您正在插入一批記錄,我認爲由於這個基本的原子性原則,我不認爲有一個一致的準確的方法來確定'X%的操作完成'。 – lyrisey 2012-07-18 19:57:09

+0

@mikurski哈哈,是啊,這是prolly爲什麼我的嘗試做我的第二個建議不適合我的工作太好。它猜測只有在記錄一次(或分批)提交1次的情況下才有效。現在我覺得有點愚蠢,因爲之前沒有意識到:) – 2012-07-18 20:02:38

1

SQL Server Profiler將爲您提供有關正在運行的單個SQL語句的資源消耗的詳細分類。 SSMS的「顯示執行計劃」選項將打破單個SQL語句並向您顯示有關SQL Server如何選擇優化語句的內部詳細信息。

如果我正確理解你(我不確定我是否理解),那麼最好使用Profiler來跟蹤一般性能。

+0

您好,感謝您的信息,說分析器太普遍,找不到我想要的信息,我編輯了主題,以解決我的需要更具體。 +1 – Sypress 2012-07-18 19:52:34