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

作者:用户1278550 时间:2024-01-21 01:37:40 

一 前言

前几天一个开发同事咨询我,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 调试环境还没成功。

来源: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
  • asp之家 网络编程 m.aspxhome.com