大型查詢讀取輔助數據庫時,對主數據庫(在鎖定方面)和還原過程有什麼影響?
我正在探索幾個解決方案:
- 日誌傳送 - 假設一個大型查詢正在執行,同時觸發了日誌傳送過程。這會停止查詢還是延遲日誌傳送恢復?顯然這對主數據庫沒有影響。
- AG - 當一個大型查詢正在執行時,同時鏡像程序發送需要寫入數據庫的數據。或者模式可能是非同步的,所以主節點正在等待次節點的送出。這對主數據庫和還原過程有何影響?
- 事務複製
我試圖了解在大型查詢讀取輔助數據庫時對主數據庫(在鎖定方面)和還原過程有什麼影響?
這會停止查詢還是延遲日誌傳送恢復?顯然這對主數據庫沒有影響。
您的意思是觸發了事務日誌,這是正確使用的詞。不,這對在主數據庫上執行的事務沒有影響。事務日誌備份不會妨礙已經執行的事務。但是在少數情況下,假設您的事務日誌很大並且儲存速度很慢(基本上是 SQL Server 之外的東西),這可能會妨礙主數據庫上的事務。
AG - 當一個大型查詢正在執行時,同時鏡像程序發送需要寫入數據庫的數據
AG 不是鏡像而是先進的。
或者模式可能是非同步的,所以主節點正在等待次節點的送出。
在非同步模式下,主要不會等待次要送出。
我試圖了解在大型查詢讀取輔助數據庫時對主數據庫(在鎖定方面)和還原過程有什麼影響?
好吧,這個問題有點含糊,但是在 LS 的情況下,在輔助上恢復不受查詢或主上任何東西的影響。對於 AG,大型讀取查詢可能會受到在主伺服器上執行的查詢的影響,但這是完全不同的情況。
日誌運輸:
如果在伺服器上執行大查詢時恢復過程開始(我假設此查詢在不同的數據庫中執行,因為您在讀取數據庫時無法恢復數據庫),查詢不會停止,但取決於硬體資源,可能會慢一點。
如果查詢是針對作為副本的數據庫執行的,那麼根據您的腳本,日誌還原將失敗並出現類似“無法獲得獨占訪問權限,因為數據庫正在使用”之類的錯誤,或者查詢將被終止。
這沒有機會影響初級
可用性組:
當您的輔助副本可讀時,SQL 將在後台使用已送出的讀取快照。這意味著即使正在編寫新事務,這也不會影響您的實際查詢(至少不會在鎖定級別)。
與日誌傳送相同,如果硬體不足,這可能會減慢您的查詢速度。AG 需要考慮的重要一點是,如果您在“同步”模式下執行,這種特定情況也會影響主節點。這是因為如果輔助節點硬體跟不上,這可能會導致輔助節點需要更長的時間來確認接收到新數據,並且由於主節點正在等待此確認以送出事務,它可以進行事務在主節點上較慢。