事務(wù)拆分
如果您的業(yè)務(wù)框架將所有請求都封裝到非自動提交的事務(wù)中,導(dǎo)致主實例負(fù)載過大,您可以開通RDS PostgreSQL的數(shù)據(jù)庫代理功能,該功能默認(rèn)支持事務(wù)拆分,能夠在保證業(yè)務(wù)中讀寫一致性的前提下,將事務(wù)內(nèi)寫操作發(fā)生之前的讀請求轉(zhuǎn)發(fā)到只讀實例,降低主實例負(fù)載。
關(guān)于RDS數(shù)據(jù)庫代理的使用問題和更多相關(guān)信息,歡迎加入用戶釘釘群(106730000316)進(jìn)行咨詢、反饋和交流 。
前提條件
已開通數(shù)據(jù)庫代理服務(wù),具體請參見開通數(shù)據(jù)庫代理。
功能說明
默認(rèn)情況下,RDS PostgreSQL的數(shù)據(jù)庫代理會將事務(wù)內(nèi)的所有請求都發(fā)送到主實例以保障事務(wù)的讀寫一致性。但是某些框架會將所有請求封裝到非自動提交的事務(wù)中,導(dǎo)致主實例負(fù)載過大,而只讀實例幾乎沒有壓力。
為了解決上述問題,您可以使用數(shù)據(jù)庫代理的事務(wù)拆分功能。您不需要改動應(yīng)用的代碼或配置就可以將事務(wù)中的讀壓力從主實例轉(zhuǎn)移到只讀實例,從而提高主實例的穩(wěn)定性。
開啟數(shù)據(jù)庫代理后(數(shù)據(jù)庫代理的事務(wù)拆分功能默認(rèn)開啟),在默認(rèn)的Read Committed隔離級別下,當(dāng)RDS PostgreSQL關(guān)閉事務(wù)自動提交后,僅會在發(fā)生寫操作時才正式開啟事務(wù),正式開啟事務(wù)前的讀請求會通過負(fù)載均衡模塊分流至只讀實例。
數(shù)據(jù)庫代理的事務(wù)拆分功能默認(rèn)開啟。暫不支持關(guān)閉。
顯式事務(wù)(例如
begin
或者start transaction
)暫時不支持拆分。某些業(yè)務(wù)對全局一致性有要求,開啟事務(wù)拆分后將不滿足全局一致性,因此在開啟數(shù)據(jù)庫代理前請評估事務(wù)拆分功能是否適用于您的業(yè)務(wù)。
相關(guān)API
API | 描述 |
查詢數(shù)據(jù)庫代理詳情。 | |
查詢數(shù)據(jù)庫代理的連接地址信息。 |