歡迎光臨
每天分享高質量文章

MySQL 中 update 修改資料與原資料相同會再次執行嗎?

(給資料分析與開發加星標,提升資料技能

來源:powdba

yq.aliyun.com/articles/694162

一、背景

 

本文主要測試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)“這個操作,該加鎖的加鎖,該更新的更新。

已同步到看一看
赞(0)

分享創造快樂