时间:2021-05-23
一 前言
前几天一个开发同事咨询我,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字段的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
判断变量是否为NULL: IF(@VaribleNameISNULL) 选择字段值为NULL的记录: WHERECOLUMN_NAMEISNULL
mysq正确清理binlog日志前言:MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增
如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是
一、开启binlog。首先查看binlog是否开启mysql>showvariableslike"log_bin";+---------------+-----
binlog是二进制日志文件,用于记录mysql的数据变更,数据在恢复的时候binlog日志能起到很大的作用。mysql的主从复制就是利用的binlog原理1、