首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 事務隔離級別與 Binlog 格式組合選型指南

     編輯:MySQL 資料庫相關知識

核心概念

  • 隔離級別:Read Committed (RC)、Repeatable Read (RR,InnoDB 預設)
  • Binlog 格式:STATEMENT (SBR)、ROW (RBR)、MIXED

組合矩陣分析

隔離級別Binlog 格式實際記錄模式一致性IO 開銷適用場景
RC STATEMENT SBR 非確定性函數導致主從不一致 低 僅用非事務引擎、不開啟主從
MIXED / ROW 強制 RBR 強一致性 高(全行記錄) 讀多寫少、需主從、表結構輕量
註:RC 下 MIXED 與 ROW 行為一致,均退化為 RBR
RR (預設) STATEMENT SBR 非確定性函數風險 低 不開啟主從、或 SQL 無不確定函數
MIXED 視 SQL 自動切換 SBR/RBR 強一致性 中等 推薦:通用生產環境,兼顧性能與一致性
ROW RBR 強一致性 高 嚴格一致性要求、表無大字段、更新較少

推薦選型

  1. RR + MIXED:最通用,開啟主從、讀寫混合、不想關心 SQL 寫法。
  2. RC + MIXED:讀多寫少、表字段少且為定長類型、願意接受同一事務內兩次查詢結果可能不同。
  3. 若不開啟 Binlog:純考慮事務隔離,RR 安全性較好,RC 性能略優。

關鍵測試結論

  • RBR 會記錄完整行前後值,WHERE 與 SET 子句皆含所有列,大字段/多列表 IO 暴增。
  • MIXED 下 RR 會為不確定函數(如 UUID())自動轉 RBR,並嘗試用類 Hint 固定值。
  • RC 下任何 DML 均強制 RBR,無法利用 SBR 低 IO 優勢。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved