MySQL中update修改数据与原数据相同会再次执行吗?
生活随笔
收集整理的這篇文章主要介紹了
MySQL中update修改数据与原数据相同会再次执行吗?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
你關注的就是我關心的!
作者:powdba 來源:阿里云棲社區
一、背景
本文主要測試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)“這個操作,該加鎖的加鎖,該更新的更新。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的MySQL中update修改数据与原数据相同会再次执行吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一位资深Java的阿里系公司实战面试经验
- 下一篇: 8 种常被忽视的 SQL 错误用法