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

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

 一、背景

本文主要测试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)“这个操作,该加锁的加锁,该更新的更新。 

 

责任编辑:庞桂玉 来源: Java知音
相关推荐

2019-03-21 14:00:05

MySQLUpdate数据库

2023-12-30 10:59:03

MySQLupdate数据库

2021-06-22 10:24:22

Statement接口修改数据删除数据

2010-10-21 14:12:07

SQL Server游

2010-06-10 17:51:35

2010-06-12 10:41:23

MySQL修改数据

2011-05-26 12:54:31

数据库数据库名

2018-11-12 15:15:32

MySQL数据库命令

2009-04-29 16:10:14

2010-05-18 17:17:02

MySQL数据表

2011-08-11 13:19:17

MySQLupdatedelete

2011-07-07 10:41:07

php批量删除

2010-05-24 13:14:19

创建MySQL

2010-05-04 11:58:38

Oracle数据库

2009-11-13 11:18:22

ADO.NET修改数据

2011-04-07 09:06:27

MySQL数据库密码

2023-12-18 13:10:00

finally死锁JVM 崩溃

2010-01-20 14:52:21

VB.NET修改数据窗

2011-08-25 14:10:00

SQL ServerDB2修改数据表列

2022-03-28 13:13:58

分布列CitusPostgreSQ
点赞
收藏

51CTO技术栈公众号