讀寫分離 & 分庫分表 & 深度分頁

balfish發表於2024-03-09

什麼是讀寫分離?

見名思意,根據讀寫分離的名字,我們就可以知道:讀寫分離主要是為了將對資料庫的讀寫操作分散到不同的資料庫節點上。 這樣的話,就能夠小幅提升寫效能,大幅提升讀效能。

一般情況下,我們都會選擇一主多從,也就是一臺主資料庫負責寫,其他的從資料庫負責讀。主庫和從庫之間會進行資料同步,以保證從庫中資料的準確性。這樣的架構實現起來比較簡單,並且也符合系統的寫少讀多的特點。

如何實現讀寫分離?

不論是使用哪一種讀寫分離具體的實現方案,想要實現讀寫分離一般包含如下幾步:

  1. 部署多臺資料庫,選擇其中的一臺作為主資料庫,其他的一臺或者多臺作為從資料庫。
  2. 保證主資料庫和從資料庫之間的資料是實時同步的,這個過程也就是我們常說的主從複製
  3. 系統將寫請求交給主資料庫處理,讀請求交給從資料庫處理。

什麼情況下會出現主從延遲?如何儘量減少延遲?

我們在上面的內容中也提到了主從延遲以及避免主從延遲的方法,這裡我們再來詳細分析一下主從延遲出現的原因以及應該如何儘量減少主從延遲。

要搞懂什麼情況下會出現主從延遲,我們需要先搞懂什麼是主從延遲。

MySQL 主從同步延時是指從庫的資料落後於主庫的資料,這種情況可能由以下兩個原因造成:

  1. 從庫 I/O 執行緒接收 binlog 的速度跟不上主庫寫入 binlog 的速度,導致從庫 relay log 的資料滯後於主庫 binlog 的資料;
  2. 從庫 SQL 執行緒執行 relay log 的速度跟不上從庫 I/O 執行緒接收 binlog 的速度,導致從庫的資料滯後於從庫 relay log 的資料。

相關文章