MySQL中,當update修改數(shù)據(jù)與原數(shù)據(jù)相同時會再次執(zhí)行嗎?
來源:yq.aliyun.com/articles/694162
一、背景
本文主要測試MySQL執(zhí)行update語句時,針對與原數(shù)據(jù)(即未修改)相同的update語句會在MySQL內(nèi)部重新執(zhí)行嗎?
二、測試環(huán)境
MySQL5.7.25
Centos 7.4
三、binlog_format為ROW
1、參數(shù)

2、測試步驟
session1

session2

session1

3、總結
在binlog_format=row和binlog_row_image=FULL時,由于MySQL 需要在 binlog 里面記錄所有的字段,所以在讀數(shù)據(jù)的時候就會把所有數(shù)據(jù)都讀出來,那么重復數(shù)據(jù)的update不會執(zhí)行。即MySQL 調(diào)用了 InnoDB 引擎提供的“修改為 (1,55)”這個接口,但是引擎發(fā)現(xiàn)值與原來相同,不更新,直接返回。
四、binlog_format為STATEMENT
1、參數(shù)

2、測試步驟
session1

session2

session1

3、總結
在binlog_format=statement和binlog_row_image=FULL時,InnoDB內(nèi)部認真執(zhí)行了update語句,即“把這個值修改成 (1,999)“這個操作,該加鎖的加鎖,該更新的更新。
文末福利
知乎上有一套?5000 頁的 Java 學習手冊,已經(jīng)3萬贊了!此手冊內(nèi)容專注 Java技術,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git,GitHub,Servlet,IDEA,多線程,集合,JVM,DeBug, Dubbo,Redis,算法,面試題等相關內(nèi)容。

下載方式
1.?首先掃描下方二維碼
2.?后臺回復「555」即可獲取
注明:文章僅僅知識分享,切勿用于其它商業(yè)活動 。感謝所有技術分享者的付出。
點贊是最大的支持?![]()
評論
圖片
表情
