2015-05-04 23 views
3

我有一個包含幾千條記錄的MS SQL 2008數據庫。突然其中一個表格不能接受新的行插入。編輯和刪除仍然可以。在活動監控器,它顯示爲:由於pagelatch_ex而導致SQL插入掛起

任務狀態:已暫停 命令:插入 等待類型:PAGELATCH_EX

沒有等待幾分鐘後發生的。如果我刪除該表中最新的(底部)200(估計)行之一,我只能插入一個新行。插入第二行再次掛起。如果我刪除最近200行中的3行,我只能插入3個新行。但是,如果我刪除不在最新的200行內,我不能插入任何行。

插入新行後,新ID在SSMS結果視圖中排在最前面,而不是在底部(不排序)。例如:100,101,102,95,96,97,98,99,其中100和以上是新插入的數據。

現在該表只有2列,ID(主列,標識種子)和InvoiceID列。所有索引視圖,表格和約束都被刪除,同樣的問題。

我剛剛發現刪除ID列的主鍵並重新設置它可以解決問題。但是,對ID的排序仍然會搞砸。新行定位在上部,舊行被壓下。

是什麼原因導致了這個問題,以及如何預防它?謝謝。

+1

如果您在https://dba.stackexchange.com/上發佈此問題,您可能會獲得更多見解。這是一個專門針對數據庫管理問題的與Stackoverflow相關的網站。 –

回答

0

Pagelatch_ex發生在有需要修改頁面的請求時。通常情況下,鎖存是短暫的&不會影響性能。但是,如果您有較慢的I/O子系統或其他資源瓶頸,則可能會遇到問題。您需要首先確定涉及哪個數據庫/表&。

troubleshooting performance problems whitepaper開頭。它介紹瞭解決各種性能問題的步驟 - 如何使用DMV,性能計數器等。