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
- Jtti:MySQL 資料庫中update語句會不會發生死鎖JttiMySql資料庫
- 【mysql】【Sequelize】【錯誤記錄】update修改資料後,不返回資料(其實就是mysql不支援)MySql
- MySQL更新資料,如何使用updateMySql
- MySQL 執行原理【資料頁】MySql
- MySQL資料災難挽救之Delete\UpdateMySqldelete
- MySQL的資料備份與還原MySql
- docker 安裝執行mysql資料庫DockerMySql資料庫
- 資料湖會取代資料倉儲嗎?
- mysql插入資料時如果有相同資料就不插入或者替換MySql
- 演算法相同,純SQL在資料庫內執行 與Golang呼叫database. SQL執行的速率?演算法SQL資料庫GolangDatabase
- Oracle資料庫中資料行遷移與行連結Oracle資料庫
- 記錄一下MySql update會鎖定哪些範圍的資料MySql
- python 操作 PostgreSQL 資料庫,執行緒並行修改 5w 條資料,效能優化PythonSQL資料庫執行緒並行優化
- 如何修改MySQL資料庫名稱MySql資料庫
- wdcp修改mysql的資料目錄MySql
- el-table合併相同資料的行
- 瞭解 MySQL的資料行、行溢位機制嗎?MySql
- mysql資料庫-備份與還原實操MySql資料庫
- 生產資料update沒加where條件(從執行到恢復)
- 我應該手動修改線上資料庫的資料嗎?資料庫
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- mysql資料庫新增和修改欄位MySql資料庫
- Linux 中 如何判斷每一行的資料都是相同的Linux
- Java執行時資料Java
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- 成為MySQL DBA後,再看ORACLE資料庫(十四、統計資訊與執行計劃)MySqlOracle資料庫
- Mysql資料備份和還原MySql
- 資料庫的統計(select)確實會影響資料庫的更新(update)的資料庫
- PbootCMS資料庫配置,修改為Mysql資料庫,配置Mysql出錯解決辦法boot資料庫MySql
- Netty中的Channel之資料沖刷與執行緒安全(writeAndFlush)Netty執行緒
- 大資料執行環境的執行大資料
- 在MySQL中,如何獲取資料庫下所有表的資料行數?MySql資料庫
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- 將MYSQL資料顯示在QT的tablewidget中/將QT中的資料儲存到MYSQL資料庫中MySqlQT資料庫
- MySQL更新資料時,日誌(redo log、binlog)執行流程MySql
- python--建立一個與已有DataFrame行數相同的資料框的方式Python
- JVM執行時資料區JVM