加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL|update字段为相同的值是否会记录binlog

发布时间:2022-09-23 15:20:38 所属栏目:MySql教程 来源:
导读:  一 前言

  前几天一个开发同事咨询我,update 更新字段为相同的值是否会记录binlog,我回复说不会。

  其实 严格的说这个答案是不准确的,说要区分场景。是否记录 update 语句到binlog依赖于 binlog
  一 前言
 
  前几天一个开发同事咨询我,update 更新字段为相同的值是否会记录binlog,我回复说不会。
 
  其实 严格的说这个答案是不准确的,说要区分场景。是否记录 update 语句到binlog依赖于 binlog_format 的设置。具体情况 实践出真知。
 
  二 测试2.1 binlog_format 为 ROW 模式

  2.2 binlog_format 为 STATEMENT 模式
 
  解析binlog内容,完整的记录了update语句。
 
  2.2 binlog_format 为 MIXED 模式

  当 row_format 为mixed或者statement格式是,binlog 的大小发生改变,不管是否真的更新数据,MySQL都记录执行的sql 到binlog。
 
  三 小结
 
  基于row模式时,server层匹配到要更新的记录,发现新值和旧值一致,不做更新,就直接返回,也不记录binlog。
 
  基于 statement 或者 mixed格式,MySQL执行 update 语句,并把更新语句记录到binlog。
 
  那为什么问题来了 statement 和 mixed 会完整的记录sql语句呢?且听下回分解吧,因为我要解析源码mysql字段,使用Clion 编译MySQL 调试环境还没成功。。
 
  -The End-
 
  本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。
 
 
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!