我們有一個建立在三個大型表上的索引視圖。其中兩個表(A & B)不斷更新用戶事務,另一個表(C)包含需要每週更新一次的數據產品信息。該產品表包含超過600萬條記錄。對索引視圖執行大型更新
對於我們的核心業務流程,我們需要在這三個表中使用此視圖,但不幸的是,我們無法更改此方面。我們甚至有一個sql server MVP來幫助在負載下進行測試,以確保我們擁有最高效的配置。產品表中有一列在視圖中使用,並且必須每週更新一次。
我們現在遇到的問題是,隨着交易量增加,我們的交易對照表A & B,表C的更新導致死鎖。
我已經嘗試了幾種不同的方法無濟於事: 1)我希望我們可以改變視圖,以便表C可以是一個髒讀「WITH(NOLOCK)」,但顯然該功能不適用於索引觀點。
2)我想過更新表C中的新列,然後在完成過程時重命名它,但由於視圖中的依賴關係而無法完成此操作。
3)我也樂於將這個值寫入臨時產品表,然後對該視圖運行ALTER語句以使其指向我的新表。但是,當我這樣做時,我的觀點中的索引被刪除,重新創建它們花費了相當多的時間。 4)我們試圖每小時進行一次更新(一次只能處理100條記錄),但是我們仍然遇到了死鎖。
問題:
一),我們使用的是SQL Server 2005的SQL Server 2008中是否有他們的索引視圖的新功能,將幫助我們?現在有一種方法可以執行帶有索引視圖的髒讀操作嗎?
b)改變現有視圖以指向新表的更好方法?
謝謝!