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

(编辑:jimmy 日期: 2024/12/26 浏览:2)

一 前言

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

其实 严格的说这个答案是不准确的,说要区分场景。是否记录 update 语句到binlog依赖于 binlog_format 的设置。具体情况 实践出真知。

二 测试

2.1  binlog_format 为 ROW 模式

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

2.2  binlog_format 为 STATEMENT 模式

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

解析binlog内容,完整的记录了update语句。

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

2.2  binlog_format 为 MIXED 模式

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

当 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字段的资料请关注其它相关文章!

一句话新闻

高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。