子事務併發回滾流程最佳化
可獲得性
本特性自openGauss 5.1.0版本開始引入。
特性簡介
本特性利用ProcArrayGroup資料結構管理所有搶佔ProcArrayLock鎖失敗的backends,由第一個進入group的backend作為group leader負責請求ProcArrayLock鎖,並在獲取到鎖後清理group中所有backend的事務資訊。避免子事務併發回滾時,各backend互相爭搶ProcArrayLock,導致事務被阻塞的問題。
客戶價值
最佳化大量包含子事務的業務併發提交、回滾時,對ProcArrayLock鎖的爭搶問題,提高該場景下的事務併發能力。
特性描述
在子事務回滾場景,每個子事務回滾時都會清理PGPROC中的子事務列表等事務資訊,並更新lastCompleteXid,在此期間需要申請ProcArrayLock用於保護ProcArray。如果一個事務內包括多個子事務,在回滾事務時,會序列回滾每個子事務,每次回滾都需要請求ProcArrayLock,此外事務提交或回滾同樣需要請求ProcArrayLock鎖。因此在大量子事務併發提交、回滾時,backends對ProcArrayLock的爭搶會較為明顯,進而可能導致事務的提交和回滾被阻塞。
針對該問題,本特性利用ProcArrayGroup資料結構管理所有搶佔ProcArrayLock鎖失敗的backends,由第一個進入group的backend作為group leader負責請求ProcArrayLock鎖,並在獲取到鎖後清理group中所有backend的事務資訊,避免各backend之間互相爭搶ProcArrayLock,提高子事務回滾效率。
特性增強
最佳化子事務併發回滾時,對ProcArrayLock鎖的爭搶問題。
特性約束
無。
依賴關係
本特性依賴於已有的事務結束和子事務回滾流程。