全部產品
Search
文件中心

ApsaraDB RDS:什麼是讀寫分離

更新時間:Jun 19, 2024

如果您的業務情境中讀請求遠大於寫請求,且大量的讀請求對主執行個體造成了負載壓力,則可以購買唯讀執行個體,配合RDS PostgreSQL資料庫代理的讀寫分離功能,通過一個資料庫Proxy 位址實現讀寫請求的自動轉寄,充分發揮各唯讀執行個體的讀效能,減輕主執行個體的訪問壓力。

介紹

少寫多讀的應用情境可能會對主執行個體造成巨大的讀取壓力,進而影響到業務。資料庫代理的讀寫分離功能,可使寫請求自動轉寄到主執行個體,讀請求自動轉寄到各個唯讀執行個體,實現讀寫請求的自動分流,減輕主執行個體的壓力。

讀寫分離優勢

  • 統一讀寫分離地址,方便維護。

    不開通讀寫分離時,您需要在應用程式中分別配置主執行個體和每個唯讀執行個體的串連地址,才能實現將寫請求發往主執行個體而將讀請求發往唯讀執行個體。

    RDS讀寫分離功能提供資料庫代理串連地址,您串連該地址後即可對主執行個體和唯讀執行個體進行讀寫操作,讀寫請求被自動轉寄到對應執行個體,可降低維護成本。

    同時,您只需添加唯讀執行個體的個數,即可不斷擴充系統的處理能力,應用程式無需做任何修改。

  • 原生鏈路支援,提升效能,減少維護成本。

    如果您在雲上自行搭建代理層實現讀寫分離,資料在到達資料庫之前需要經歷多個組件的語句解析和轉寄,對響應延遲有較大的影響。而RDS讀寫分離內建在RDS原生生態裡,能夠有效降低延遲,提升處理速度,同時減少您的維護成本。

  • 執行個體健全狀態檢查,提升資料庫系統的可用性。

    讀寫分離模組將自動對主執行個體和唯讀執行個體進行健全狀態檢查,當發現某個執行個體出現宕機或者延遲超過閾值時,將不再分配讀請求給該執行個體,讀寫請求在剩餘的健康執行個體間進行分配。以此確保單個唯讀執行個體發生故障時,不會影響應用的正常訪問。當執行個體被修複後,RDS會自動將該執行個體納回請求分配體系內。

    說明

    為避免單點故障,建議您為一個主執行個體建立至少兩個唯讀執行個體。

  • 可自訂設權重和閾值,符合多情境使用。

    您可以自訂設定主執行個體和唯讀執行個體的讀請求權重,以及設定唯讀執行個體的延遲閾值。

請求轉寄類型

轉寄目標

請求類型

只發往主執行個體

  • INSERT、UPDATE、DELETE、SELECT FOR UPDATE。

  • 所有DDL操作(建表/庫、刪表/庫、變更表結構、許可權等)。

  • 所有事務中的請求。

  • 使用者自訂函數。

  • 預存程序。

  • Multi Statements。

    說明

    如果執行了Multi-Statements或預存程序,當前串連的後續請求會全部路由到主節點,需斷開當前串連並重新串連才能恢複讀寫分離。

  • 使用到暫存資料表的請求。

  • 系統資料表的讀寫請求。

  • Prepared Statement中的寫操作。

發往唯讀執行個體或主執行個體

  • 非事務中的SELECT。

  • 開啟事務拆分後,事務中第一個寫操作之前的請求。

  • Prepared Statement中的讀操作。

  • 可以安全地在唯讀上操作的系統函數,如pg_sleep等。

總是發往所有執行個體

  • 所有系統變數的更改。

  • Prepared Statement中的Parse。

  • BEGIN/START,END/ROLLBACK/COMMIT。

  • CANCEL。

操作步驟

請參見開通資料庫代理設定資料庫代理終端

注意事項

請參見資料庫代理注意事項

常見問題

請參見資料庫代理常見問題