Sql-Server

SQL 鏡像鎖定/阻塞爭用

  • June 18, 2018

我們要設置鏡像高性能非同步。伺服器 A 主體包含鏡像到伺服器 B 的數據庫。除非創建快照,否則鏡像不允許讀取查詢。

  1. 如果我們使用快照進行報告查詢,並且大量的 OLTP 事務從伺服器 A 發送到伺服器 B,報告查詢是否會創建鎖定/阻塞爭用,這將阻止伺服器 B 鏡像接收更新?

  2. 如果是這樣,我可以將伺服器 B 鏡像數據庫置於讀取送出快照隔離 (RCSI) 中,以防止鎖定/阻塞(而伺服器 A 處於讀取送出狀態)?或者鏡像數據庫是否總是必須與 Principal 處於相同的事務隔離級別?

  1. 如果我們使用快照進行報告查詢,並且大量的 OLTP 事務從伺服器 A 發送到伺服器 B,報告查詢是否會創建鎖定/阻塞爭用,這將阻止伺服器 B 鏡像接收更新?

這將取決於。如果您正在讀取自創建快照以來已更改的頁面,則您正在從稀疏文件中讀取該頁面。在這種情況下,沒有爭議。但是,如果您正在讀取自創建快照以來未更改的頁面,則您正在從源數據庫文件中讀取。這可能會導致文件級別的爭用,因為源數據庫和快照都將訪問相同的 MDF。

這是兩篇您可能會覺得有幫助的好文章。

  1. Basit Aalishan Masood-Al-Farooq 的數據庫快照
  2. Andrew Calvett 的SQL Server 2005 快照
  1. 如果是這樣,我可以將伺服器 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

引用自:https://dba.stackexchange.com/questions/209834