RDS MySQL的資料庫代理提供事務拆分功能,該功能在保證業務中讀寫一致性的前提下,能夠將事務內第一個寫請求之前的讀請求轉寄到唯讀執行個體,降低主執行個體負載。本文介紹如何設定事務拆分。
前提條件
背景資訊
預設情況下,RDS MySQL的資料庫代理會將事務內的所有請求都發送到主執行個體以保障事務的正確性,但是某些架構會將所有請求封裝到非自動認可的事務中(通過執行set autocommit=0;
關閉自動認可),導致主執行個體負載過大,如下圖所示。
為瞭解決上述問題,可以使用資料庫代理的事務拆分功能。您不需要改動應用的代碼或配置就可以將事務中的讀壓力從主節點轉移到唯讀節點,從而提高主節點的穩定性。
開啟事務拆分後,在預設的Read Committed隔離等級下,當RDS MySQL關閉事務自動認可後,僅會在發生寫操作時才正式開啟事務,正式開啟事務前的讀請求會通過負載平衡模組分流至唯讀執行個體。
說明
資料庫代理的事務拆分功能預設開啟。
明確交易(例如begin或者start transaction)暫時不支援拆分。
某些業務對全域一致性有要求,開啟事務拆分後將不滿足全域一致性。因此,在開啟事務拆分前請評估事務拆分功能是否適用於您的業務。
開啟或關閉事務拆分
您可以根據需求隨時關閉或開啟事務拆分功能。
- 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列,單擊資料庫代理。
在串連資訊地區,在目標代理串連地址的操作列,單擊修改配置。
在彈出的對話方塊中,單擊事務拆分右側的開啟或關閉。
說明開通或關閉事務拆分後僅對新串連生效。
相關API
API | 描述 |
查詢RDS執行個體的資料庫代理詳情。 | |
查詢RDS執行個體資料庫代理的串連地址資訊。 | |
修改RDS執行個體資料庫代理的代理終端設定。 |