我們可以看到,在我們的perl程序運行期間,基本上連接到SQLserver以插入/刪除/更新數據,下面非常頻繁地調用 sp_tables @table_name='NOXXTABLE'
。我們看到,對於許多SPID來說,這個呼叫發生了很多次。sp_tables調用需要更多時間導致阻塞
在SQLserver上運行sp_tables @table_name='NOXXTABLE'
我們可以看到它沒有返回任何行。它通常以毫秒爲單位完成。
但是在分析後,當我們檢查阻塞SPID的特定SQLText(sp_tables @table_name='NOXXTABLE')
的運行時間時,它在0秒到1分鐘之間變化,並且在相同的SPID內被非常頻繁地調用。許多SPID也是如此,它們每次都需要花費很多時間再次調用sp_tables
。
有沒有解決方案可以解決這個問題?
謝謝bohica! 在這種情況下,從哪裏ping完成,爲什麼? 在此點燃一些光。 我們在兩次選擇之間也看到了sp_tables調用。 那麼這裏我們怎麼稱呼它少了幾次? 表('','','NOXXTABLE','')是否知道數據庫連接是否還活着? ,因爲沒有任何名爲NOXXTABLE並且沒有結果返回。 – 2010-08-11 13:39:08
我不能告訴你你的代碼(或你使用的代碼)在哪裏調用ping。我告訴你的是,當調用DBI ping方法並且使用DBD :: ODBC時,它通過在表NOXXTABLE上發出表呼叫來實現ping。爭論是這將需要往返數據庫。 – bohica 2010-08-11 14:22:50