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