社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL中update修改数据与原数据相同会再次执行吗?

Java后端技术 • 6 年前 • 606 次点击  

点击上方Java后端技术”,选择“置顶或者星标”

你关注的就是我关心的!

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

一、背景

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

二、测试环境

MySQL5.7.25

Centos 7.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,999)“这个操作,该加锁的加锁,该更新的更新。

热门内容:

1、还在使用SimpleDateFormat?你的项目崩没?

2、Tomcat相关面试题,看这篇就够了!保证能让面试官颤抖!

3、IDEA一定要懂的30个快捷键!

4、Dubbo面试18问!这些你都会吗?

5、狗屎一样的代码!快,重构我!

6、2019年超详细的Spring Boot知识清单

7、你选择25k的996还是18k的965?

8、并不是所有的 Github 写在简历上都加分

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30165
 
606 次点击