MySQL中update修改数据与原数据

作者:powdba来源:阿里云栖社区

一、背景

本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗?

二、测试环境

MySQL5.7.25

Centos7.4

三、binlog_format为ROW

1、参数

2、测试步骤

session1

session2

session1

3、总结

在binlog_format=row

和binlog_row_image=FULL时,

由于MySQL需要在binlog里面记录所有的字段,所以在读数据的时候就会把所有数据都读出来,那么重复数据的update不会执行。即MySQL调用了InnoDB引擎提供的“修改为(1,55)”这个接口,但是引擎发现值与原来相同,不更新,直接返回。

四、binlog_format为STATEMENT

1、参数

2、测试步骤

session1

session2

session1

3、总结

在binlog_format=statement

和binlog_row_image=FULL时,

InnoDB内部认真执行了update语句,即“把这个值修改成(1,)“这个操作,该加锁的加锁,该更新的更新。

程序汪往期精彩文章包含答案

程序汪最近整理的BAT大小厂面试题(面试题目录推荐)

目录:我把精华文章都整理出来了

年换工作面试总结

年程序汪回复程序员小白11问,祝大家都能高薪

讲述:一个月薪的北京程序员的真实生活

SQL语句大全,所有的SQL都在这里

天真!这简历一看就是包装过的

终于见识到的架构到底有多“牛逼”?

程序汪的总结,认识了很多朋友赚了些小钱,现在分享出来

给个[在看],是对程序汪最大的支持预览时标签不可点收录于合集#个上一篇下一篇

转载请注明:http://www.aierlanlan.com/rzfs/803.html