Sql-Server

如何將所有複製設置為 DEADLOCK_PRIORITY LOW?

  • May 18, 2021

我剛剛在這裡收到了這封電子郵件: 在此處輸入圖像描述

然後查看 sql server 日誌,我發現這個死鎖是由我們的一個程序(即受害者)針對複製造成的。

在此處輸入圖像描述

好的,特別是在這種情況下,我注意到可以調整這個特定的過程,我什至發現了一個缺失的索引,如下所示。

在此處輸入圖像描述

但是同樣的情況已經發生了很多次,我會贏得程序,複製是受害者,我會在以後處理程序。

我怎麼能把這個:

SET DEADLOCK_PRIORITY LOW

無處不在,在每個複制事務中

這是為了檢查它:

   SELECT session_id,deadlock_priority 
FROM sys.dm_exec_sessions 
   WHERE SESSION_ID = @@SPID

在此處輸入圖像描述

如何

設置好監控tempdb 之後,我們選擇並使用了READ COMMITTED SNAPSHOT,如評論中所述。

如何實現讀取已送出快照以及它與快照有何不同已在此處進行了很好的描述(包括解釋如何設置它的連結) 。

此外,READ_COMMITTED_SNAPSHOT(以下稱為 RCSI)只會給你一些樂觀並發的屬性。RCSI 和快照 (SI) 在三個主要方面有所不同:

  1. 所有 RC 隔離查詢將立即使用 RCSI。
  2. RCSI 為單個語句提供數據庫的時間點(快照)視圖。
  3. SI 為整個事務提供時間點視圖。
  4. SI 可能有寫衝突。

也引用自同一來源

在這些文章中可以找到有關使用 RCSI/SI 時的一些陷阱和注意事項的其他有用細節:

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