查看原文
其他

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

Java精选 2022-08-09

背景

本文主要测试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、总结

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

作者:powdba

developer.aliyun.com/article/694162

往期精选

MyBatis 框架中动态 SQL 应用分析,之后写 SQL 就爽很多了

用完 Gradle 后,有点嫌弃 Maven 了!速度贼快!

优秀的 Java 项目,代码都是如何分层的?

Spring 为啥默认把 bean 设计成单例的?这篇讲的明明白白

为什么代码规范要求SQL语句不要过多的join?

Spring Boot 最流行的 16 条实践,Java 开发变得更加简单!

IDEA 中集成 MyBatis Generator 组件逆向生成工程

Spring 框架中解决循环依赖的 3 种方式,值得一看!

面试官:为什么选择B+树作为数据库索引结构?

从 0 开始手写一个 Mybatis 框架,三步搞定!

点个赞,就知道你“在看”

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存