• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

当update修改数据与原数据相同时会再次执行吗

其他 supingemail 1828次浏览 0个评论

.

目录

一、背景

二、测试环境

三、binlog_format为ROW

四、binlog_format为STATEMENT

一、背景

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

二、测试环境

MySQL5.7.25

Centos 7.4

三、binlog_format为ROW

1、参数

当update修改数据与原数据相同时会再次执行吗

2、测试步骤

session1

当update修改数据与原数据相同时会再次执行吗

session2

当update修改数据与原数据相同时会再次执行吗

session1

当update修改数据与原数据相同时会再次执行吗

3、总结

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

 

四、binlog_format为STATEMENT

1、参数

当update修改数据与原数据相同时会再次执行吗

2、测试步骤

session1

当update修改数据与原数据相同时会再次执行吗

session2

当update修改数据与原数据相同时会再次执行吗

session1

当update修改数据与原数据相同时会再次执行吗

3、总结

在binlog_format=statement和binlog_row_image=FULL时,InnoDB内部认真执行了update语句,即“把这个值修改成 (1,999)“这个操作,该加锁的加锁,该更新的更新。

4.结论

在binlog_format=statement和binlog_row_image=FULL时,InnoDB内部认真执行了 update 语句。

在binlog_format=row和binlog_row_image=FULL时,InnoDB内部认没有执行 update 语句。

 


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明当update修改数据与原数据相同时会再次执行吗
喜欢 (0)

您必须 登录 才能发表评论!

加载中……