本文將介紹PolarDB-X 1.0讀寫分離功能的原理。

PolarDB-X 1.0存儲資源MySQL主實例的讀請求較多、讀壓力比較大時,您可以通過讀寫分離功能對讀流量進行分流,減輕存儲層的讀壓力。

PolarDB-X 1.0讀寫分離功能采用了對應用透明的設計。在不修改應用程序任何代碼的情況下,只需在控制臺中調整讀權重,即可實現將讀流量按自定義的權重比例在存儲資源MySQL主實例與多個存儲資源只讀實例之間進行分流,而寫流量則不做分流全部到指向主實例。

設置讀寫分離后,從存儲資源MySQL主實例讀取屬于強讀(即實時強一致讀);而只讀實例上的數據是從主實例上異步復制而來存在毫秒級的延遲,因此從只讀實例讀取屬于弱讀(即非強一致性讀)。您可以通過Hint指定那些需要保證實時性和強一致性的讀SQL到主實例上執行,詳情請參見讀寫分離

讀寫分離

讀寫分離對事務的支持

讀寫分離僅對顯式事務(即需要顯式提交或回滾的事務)以外的讀請求(即查詢請求)有效,寫請求和顯式事務中的讀請求(包括只讀事務)均在主實例中執行,不會被分流到只讀實例。

常見的讀、寫請求SQL語句包括:

  • 讀請求:SELECT、SHOW、EXPLAIN、DESCRIBE。
  • 寫請求:INSERT、REPLACE、UPDATE、DELETE、CALL。

關于如何設置讀寫分離,詳情請參見存儲管理