0
我在SQL Server 2008 R2中有一個非常複雜的存儲過程,它將大量數據插入到數據庫的多個表中。SQL Server存儲過程一直在等待「等待命令」
此過程的副本在其他幾臺服務器上運行良好。我通常在服務器代理中使用一個作業來運行該過程,但是當我在我的開發服務器上執行此操作時,作業失敗,在日誌中顯示代碼片段,但其他內容很少。
當我在作業之外執行存儲過程時,活動監視器顯示處理爲任務狀態:「暫停」,命令:「等待命令」和waittype在「IO_Completion」,「PAGEIOLatch_SH」和空白之間交替。
This page表明可能有內存分配的問題,但磁盤上仍有9gb寫入數據和日誌(數量不多,但應該足夠了)。
有沒有人知道等待類型IO_Completion在執行存儲過程的上下文中意味着什麼?
您已詢問X,Y問題。如果你發佈了proc和錯誤,你將有更好的機會得到你的* actual *問題的答案。 – scsimon
[PAGEIOLATCH_SH](https://www.sqlskills.com/help/waits/pageiolatch_sh/)通常是等待數據頁從磁盤或內存中讀取的系統。 [IO_COMPLETION](https://www.sqlskills.com/help/waits/io_completion/)通常是等待從磁盤或內存中讀取非數據頁面的系統。這不一定表明問題是IO,但是,因爲*大部分* SQL Server操作都是IO綁定的。如果你真的想挖掘它,你可以從這裏開始(https://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/),但它可能是一隻紅鯡魚。 –
不知道你的開發系統的配置,真的很難說這個問題是什麼。這聽起來像是你已經將日誌和數據文件都放在同一個磁盤上了,如果你還沒有預先生成文件,這不會對大插入有幫助。如果你的開發系統沒有太多的內存,這可能是內存耗盡的問題。它也可能是tempdb爭用,因爲這是SQL Server在需要臨時空間時使用的。 –