MySQL 中 update 修改資料與原資料相同會再次執行嗎?
閱讀本文大概需要 2.8 分鐘。
作者: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)“這個操作,該加鎖的加鎖,該更新的更新。
·END·
程式設計師的成長之路
路雖遠,行則必至
本文原發於 同名微信公眾號「程式設計師的成長之路」,回覆「1024」你懂得,給個讚唄。
往期精彩回顧
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902700/viewspace-2642336/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel 修改資料與原資料一樣 導致沒有執行sqlLaravelSQL
- 修改MySQL中的資料MySql
- Jtti:MySQL 資料庫中update語句會不會發生死鎖JttiMySql資料庫
- 【mysql】【Sequelize】【錯誤記錄】update修改資料後,不返回資料(其實就是mysql不支援)MySql
- MySQL更新資料,如何使用updateMySql
- MySQL 執行原理【資料頁】MySql
- 對執行中的Mysql資料庫建立從庫MySql資料庫
- ASMCMD執行ASM後設資料備份與還原ASM
- MySQL的資料備份與還原MySql
- MySQL資料庫備份與還原MySql資料庫
- 資料湖會取代資料倉儲嗎?
- MySQL資料災難挽救之Delete\UpdateMySqldelete
- php資料庫之mysql(where、orderBy、Update)PHP資料庫MySql
- 如何建立與現有資料庫相同的空資料庫資料庫
- mysql插入資料時如果有相同資料就不插入或者替換MySql
- mysql 修改資料庫的列MySql資料庫
- mysql修改資料庫編碼MySql資料庫
- mysql修改資料檔案目錄MySql
- 演算法相同,純SQL在資料庫內執行 與Golang呼叫database. SQL執行的速率?演算法SQL資料庫GolangDatabase
- SOS?求教執行CMP之create,能正常執行,但資料庫中無資料資料庫
- el-table合併相同資料的行
- 我應該手動修改線上資料庫的資料嗎?資料庫
- 記錄一下MySql update會鎖定哪些範圍的資料MySql
- 瞭解 MySQL的資料行、行溢位機制嗎?MySql
- mysql資料庫-備份與還原實操MySql資料庫
- 資料庫修改資料資料庫
- MySQL資料庫中修改密碼方法總結(轉)MySql資料庫密碼
- 獲取某個資料所在資料列表中的行數 mysqlMySql
- wdcp修改mysql的資料目錄MySql
- 如何修改MySQL資料庫名稱MySql資料庫
- MySQL update資料時InnoDB內部的操作流程MySql
- MySQL之資料的insert-delete-update操作MySqldelete
- python 操作 PostgreSQL 資料庫,執行緒並行修改 5w 條資料,效能優化PythonSQL資料庫執行緒並行優化
- 生產資料update沒加where條件(從執行到恢復)
- 使用mysqldump進行mysql資料庫備份還原MySql資料庫
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- 資料庫無法update資料庫
- update引起資料庫阻塞資料庫