2011-12-05 35 views
12

我們有一個存儲過程,每天由15個用戶每天調用約300,000次。我傾注了每一條線,它的效率和我所能得到的一樣高效。SQL Server「審計註銷」操作需要很長時間。

的存儲過程是通過ASP.NET頁面從基本Winterms遺留VB6應用程序訪問的4.0。

當我看着SQL跟蹤文件,我看到以下內容:

  1. 的exec sp_reset_connection的(使用連接池)
  2. 審覈登錄
  3. 執行存儲過程
  4. 審覈註銷的

我在第4步看到,讀寫操作很高,這是有道理的,因爲它是一種積累該連接在池中被重用。

我關心的是需要多長時間,有時需要50ms,而其他時間400毫秒,這是完全隨機的。從我閱讀的文檔「審計註銷」是所有三個步驟的整個持續時間。但步驟1-3非常快,如0-5ms。爲什麼「審覈註銷」期限會持續這麼久?

回答

6

I'm「交易」有類似的問題,現在和偶然發現這個 帖子:http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/84ecfe9e-ff0e-4fc5-962b-cffdcbc619ee

也許這(上面所說的那些帖子)是解決方案:

「一錯誤在我的分析中已經確定當一個連接被 拉出池時,服務器被髮送一個sp_reset_connection 這個重置調用了一個audit_logout,後面跟着一個audit_login, 下一個audit_logout直到下一次連接是 拉出池......所以長的時間間隔,我看到包括 時間的應用程序處理查詢的結果,釋放 連接到連接池,爲所欲爲,最後拉 連接回出池開始下一筆交易。「