实例验证MySQL|update字段为相同的值是否会记录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语句呢?且听下回分解吧,因为我要解析源码,使用Clion 编译MySQL 调试环境还没成功。
以上就是实例验证MySQL|update字段为相同的值是否会记录binlog的详细内容,更多关于MySQL update字段的资料请关注好吧啦网其它相关文章!
相关文章:
1. MYSQL技巧:为现有字段添加自增属性2. mysql命令行客户端结果分页浏览3. 如何实现MySQL数据库的备份与恢复4. 解决Navicat for MySQL 连接 MySQL 报2005错误的问题5. 获取Gridview中ButtonField的text属性6. 如何将mysql表的内容追加导入另一张表7. 一文读懂navicat for mysql基础知识8. Mysql入门系列:对MYSQL查询中有疑问的数据进行编码9. MySQL数据库字符集修改中文UTF8(永久修改)10. mysql启动时报错 ERROR! Manager of pid-file quit without
