設置事務拆分
RDS MySQL的數(shù)據(jù)庫代理提供事務拆分功能,該功能在保證業(yè)務中讀寫一致性的前提下,能夠將事務內第一個寫請求之前的讀請求轉發(fā)到只讀實例,降低主實例負載。本文介紹如何設置事務拆分。
前提條件
背景信息
默認情況下,RDS MySQL的數(shù)據(jù)庫代理會將事務內的所有請求都發(fā)送到主實例以保障事務的正確性,但是某些框架會將所有請求封裝到非自動提交的事務中(通過執(zhí)行set autocommit=0;
關閉自動提交),導致主實例負載過大,如下圖所示。
為了解決上述問題,可以使用數(shù)據(jù)庫代理的事務拆分功能。您不需要改動應用的代碼或配置就可以將事務中的讀壓力從主節(jié)點轉移到只讀節(jié)點,從而提高主節(jié)點的穩(wěn)定性。
開啟事務拆分后,在默認的Read Committed隔離級別下,當RDS MySQL關閉事務自動提交后,僅會在發(fā)生寫操作時才正式開啟事務,正式開啟事務前的讀請求會通過負載均衡模塊分流至只讀實例。
數(shù)據(jù)庫代理的事務拆分功能默認開啟。
顯式事務(例如begin或者start transaction)暫時不支持拆分。
某些業(yè)務對全局一致性有要求,開啟事務拆分后將不滿足全局一致性。因此,在開啟事務拆分前請評估事務拆分功能是否適用于您的業(yè)務。
開啟或關閉事務拆分
您可以根據(jù)需求隨時關閉或開啟事務拆分功能。
- 訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄,單擊數(shù)據(jù)庫代理。
在連接信息區(qū)域,在目標代理連接地址的操作列,單擊修改配置。
在彈出的對話框中,單擊事務拆分右側的開啟或關閉。
說明開通或關閉事務拆分后僅對新連接生效。
相關API
API | 描述 |
查詢RDS實例的數(shù)據(jù)庫代理詳情。 | |
查詢RDS實例數(shù)據(jù)庫代理的連接地址信息。 | |
修改RDS實例數(shù)據(jù)庫代理的代理終端設置。 |