本文主要測試MySQL執行update語句時,針對與原數據(即未修改)相同的update語句會在MySQL內部從新執行嗎?session
MySQL5.7.25ide
Centos 7.4測試
session1spa
session2orm
session1blog
在binlog_format=row和binlog_row_image=FULL時,因爲MySQL 須要在 binlog 裏面記錄全部的字段,因此在讀數據的時候就會把全部數據都讀出來,那麼重複數據的update不會執行。即MySQL 調用了 InnoDB 引擎提供的「修改成 (1,55)」這個接口,可是引擎發現值與原來相同,不更新,直接返回接口
session1it
session2io
session1form
在binlog_format=statement和binlog_row_image=FULL時,InnoDB內部認真執行了update語句,即「把這個值修改爲 (1,999)「這個操做,該加鎖的加鎖,該更新的更新。