連結: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)“這個操作,該加鎖的加鎖,該更新的更新。
朋友會在“發現-看一看”看到你“在看”的內容