实例验证MySQL|update字段为相同的值是否会记录binlog
作者:用户1278550 时间:2024-01-21 01:37:40
一 前言
前几天一个开发同事咨询我,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 调试环境还没成功。
来源:https://cloud.tencent.com/developer/article/1710666
标签:MySQL,update字段,binlog
0
投稿
猜你喜欢
ASP.NET中使用SQL存储过程的方法
2007-08-24 09:31:00
Python字典常见操作实例小结【定义、添加、删除、遍历】
2021-02-18 20:42:41
Python Dict找出value大于某值或key大于某值的所有项方式
2023-10-16 19:54:55
如何判断字段的类型?
2010-01-18 20:48:00
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2024-05-03 15:32:07
6款jQuery图表插件[译]
2009-06-01 10:34:00
浅析python打包工具distutils、setuptools
2021-03-30 14:45:14
Python实现将照片变成卡通图片的方法【基于opencv】
2023-06-08 11:32:54
Python3 集合set入门基础
2021-04-25 10:20:46
如何编写一个过滤掉HTML代码的函数?
2009-11-08 18:53:00
详解Python定时器Timer的使用及示例
2021-01-25 23:54:34
python DataFrame转dict字典过程详解
2022-08-16 20:59:08
java连接Oracle数据库的方法解析
2024-01-21 22:12:27
mysql中使用replace替换某字段的部分内容
2024-01-20 14:43:39
Python实现字符串格式化输出的方法详解
2023-05-02 20:52:59
模糊查询
2024-01-21 09:23:30
Python给你的头像加上圣诞帽
2023-08-28 11:30:41
Python 给某个文件名添加时间戳的方法
2023-02-10 21:12:56
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2022-01-14 17:40:55
Python通过poll实现异步IO的方法
2023-07-17 04:08:52