我在SQL Server 2012中有一個大表,它包含大約3400萬條記錄。我有一個批處理程序,每5分鐘插入一次/更新表格,並且我有一個隨時從表格中讀取的Web應用程序。SQL Server 2012插入塊讀取
每次批處理程序寫入表時,都會導致讀取過程非常緩慢。我認爲它與隔離級別有關,但我不是那麼喜歡SQL Server,所以我不知道如何修復它。
對我來說最好的方案是讓插入不阻止讀取。有沒有可能在查詢中指定?或者我必須更改讀取查詢來選擇「髒行」?
該應用程序不是嚴格依賴於「新鮮」的數據,所以如果我可以強制數據庫允許髒讀,它會沒事的。但我不知道我能做到這一點,或者如果這是一個更好的解決方案。
插入將總是對新插入的行進行獨佔鎖 - 並且SQL Server在5,000個鎖附近有一個限制;如果超過該限制,那麼鎖可能會*升級*到表級別。所以問題是:你是否一次插入少於5000行的批次(事務)數據?如果不是,請嘗試將INSERT分解爲更小的事務。 –
沒有很好的理由解釋爲什麼會發生這種情況,所以這個問題比迄今爲止告訴我們的還要多。爲了給我們提供任何有用的幫助,您應該發佈表定義,包括任何鍵和索引定義。您還應該向我們展示批處理程序正在執行哪種SQL插入/更新,以及Web應用程序正在使用哪種SQL讀取語句。最後,給我們一些關於批處理程序的簡介:一次插入和更新多少行,需要多長時間才能運行? – RBarryYoung