binlog的三种模式以及特点

本文深入解析MySQL Binlog的三种模式:语句模式、行模式及混合模式,对比其在主从同步、IO性能及系统负载上的优缺点。语句模式记录SQL语句,简单高效但可能引起同步错误;行模式详细记录数据变化,精确但IO消耗大;混合模式结合两者优势,平衡性能与准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

binlog二进制日志文件有三种模式:

  • 语句模式
  • 行模式
  • 混合模式

statement语句模式:

也就是当delete删除一百行数据的时候,binlog只记录那一句delete SQL语句,(而如果是redolog删除一百行,就会在日志中,写一百行)。节省IO,提高性能。但是正因为只有SQL语句,当进行主从同步的时候,master上同步,也就是执行这些SQL,其中特殊函数功能的SQL执行时,容易出现问题。

row行模式:

每进行一次数据操作都会详细的记录数据前后具体变化,正因为这样,那么假如说删除十万行数据,就写入日志十万次,会导致binlog非常大,主从同步的时候,会占用大量IO、急剧降低系统IO。解决办法就是通过set sql_log_bin来解决,让删除语句不传下从库,然后从库再删除表(setsql_log_bin=0就是不让语句记录到binlog中,删除语句没有记录到日志中,所以从库不删除内容)

混合模式:

混合模式我觉得就是针对SQL中是否有函数出现的一种模式吧,因为语句模式记录的带函数的SQL可能在master上执行不了,那么就选择行模式,详细记录数据操作前后的变化;而对于一些简单的SQL就使用语句模式,这样在保证主从同步可以成功的同时,又减少了binlog的大小,从而降低系统IO的负载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值