MySQL multi-thread replication

MySQL 的 replication 一直都是 single thread。即使 slave 有能力同時跑多個 SQL query 也必須是 single thread,這是為了資料的正確性而考量,但產生了一些缺點:

  • 負荷量大的時候容易產生 replication lag。
  • replication thread 只能用一顆 CPU resource。

現在在 MySQL 5.1 上有放出 patch 讓大家測試 multi-thread replication 了:「Feature Preview: Multi-threaded Slave」,雖然有不少限制,但是總是個開始。

依照文件,主要的限制包括:

  • 只支援 transaction storage engine (像是 InnoDB)。
  • 只有 row-based events 才有辦法平行化。
  • isolation level 必須是 SERIALIZABLE。

另外,目前主要的限制還包括:(未來有機會移除)

  • 目前 table 的 primary key 必須是 integer。
  • 目前只有 INSERT 與 DELETE 能被平行處理。
  • 當 slave 在 commit 時 crash 不能保證全部都會恢復。(喂喂 XD)

有興趣的人可以測測效能,看起來還要花一段時間開發。

Leave a Reply

Your email address will not be published. Required fields are marked *