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

背景

本文主要测试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 框架,三步搞定!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值