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

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

作者:powdba 來源:雲棲社群

連結:https://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)

分享創造快樂