本文將為您介紹PolarDB PostgreSQL版(相容Oracle)叢集事務拆分的功能原理以及如何開啟事務拆分。
背景資訊
當您使用PolarDB PostgreSQL版(相容Oracle)可讀可寫入模式叢集地址時,讀寫請求會由代理(Proxy)分發到主節點和唯讀節點。為了保證一個會話串連中事務讀寫一致性,代理會將這個會話中所有在事務中的請求都發送到主節點。
例如,某些資料庫用戶端驅動(例如JDBC)預設將請求封裝在事務中,因此應用的請求都會被發送到主節點,導致主節點壓力大,而唯讀節點幾乎沒有壓力,如下圖所示。

為瞭解決上述問題,PolarDB提供了事務拆分功能,旨在保證業務中讀寫一致性的前提下,將事務中讀請求發送到唯讀節點,以減輕主節點的壓力。
功能介紹
事務拆分基礎服務
代理會將事務中第一個寫請求前的讀請求發送到唯讀節點,從而減輕主節點的負載,由於事務中未提交(COMMIT)的資料在唯讀節點上處於不可見的狀態,為了保障事務中讀寫一致性,第一個寫請求後的所有讀寫請求仍路由到主節點。如需開啟事務拆分基礎服務,請參見開啟事務拆分。

功能優勢
不需要改動應用的代碼或配置就可以將事務中的讀壓力從主節點轉移到唯讀節點,從而提高主節點的穩定性。
注意事項
僅支援對讀已提交(Read Committed)交易隔離等級的事務拆分。
對於事務拆分基礎服務,如果一致性層級不是最終一致性,只有隻讀節點與主節點資料同步成功後,事務中第一次寫請求前的讀請求才會發送到唯讀節點,否則依舊發送到主節點。關於一致性層級的具體資訊,請參見一致性層級。
開啟事務拆分
登入PolarDB控制台。
在左上方,選擇叢集所在地區。
找到目的地組群,單擊叢集ID。
在連結地址地區,單擊配置。
單擊事务拆分右側的開啟。
說明開啟事務拆分後將對新的串連生效,現有的串連需重新串連才生效。
單擊确定。
相關API
API | 描述 |
修改PolarDB的叢集地址屬性,包括讀寫入模式、新節點是否自動加入本地址、一致性層級、事務拆分、主庫不接受讀等。 |