Sql-Server
SQL 鏡像鎖定/阻塞爭用
我們要設置鏡像高性能非同步。伺服器 A 主體包含鏡像到伺服器 B 的數據庫。除非創建快照,否則鏡像不允許讀取查詢。
如果我們使用快照進行報告查詢,並且大量的 OLTP 事務從伺服器 A 發送到伺服器 B,報告查詢是否會創建鎖定/阻塞爭用,這將阻止伺服器 B 鏡像接收更新?
如果是這樣,我可以將伺服器 B 鏡像數據庫置於讀取送出快照隔離 (RCSI) 中,以防止鎖定/阻塞(而伺服器 A 處於讀取送出狀態)?或者鏡像數據庫是否總是必須與 Principal 處於相同的事務隔離級別?
- 如果我們使用快照進行報告查詢,並且大量的 OLTP 事務從伺服器 A 發送到伺服器 B,報告查詢是否會創建鎖定/阻塞爭用,這將阻止伺服器 B 鏡像接收更新?
這將取決於。如果您正在讀取自創建快照以來已更改的頁面,則您正在從稀疏文件中讀取該頁面。在這種情況下,沒有爭議。但是,如果您正在讀取自創建快照以來未更改的頁面,則您正在從源數據庫文件中讀取。這可能會導致文件級別的爭用,因為源數據庫和快照都將訪問相同的 MDF。
這是兩篇您可能會覺得有幫助的好文章。
- Basit Aalishan Masood-Al-Farooq 的數據庫快照
- Andrew Calvett 的SQL Server 2005 快照。
- 如果是這樣,我可以將伺服器 B 鏡像數據庫置於讀取送出快照隔離 (RCSI) 中,以防止鎖定/阻塞(而伺服器 A 處於讀取送出狀態)?或者鏡像數據庫是否總是必須與 Principal 處於相同的事務隔離級別?
你不能這樣做。由於鏡像數據庫處於恢復狀態,您無法進行任何更改。允許不同的配置違背了主體或數據庫鏡像,它保證具有相同的配置和數據,因此主體和鏡像的角色可以隨時切換。
與您的問題無關,但您可能會發現這很有用,尤其是評論
in fact, you can’t execute this on the mirror, because the database is in the restoring state
。如何為具有數據庫鏡像的數據庫啟用 RCSI,作者 Sanjay Mishra