實例驗證MySQL|update字段為相同的值是否會記錄binlog
一 前言
前幾天一個開發(fā)同事咨詢我,update 更新字段為相同的值是否會記錄binlog,我回復說不會。
其實 嚴格的說這個答案是不準確的,說要區(qū)分場景。是否記錄 update 語句到binlog依賴于 binlog_format 的設(shè)置。具體情況 實踐出真知。
二 測試
2.1 binlog_format 為 ROW 模式

2.2 binlog_format 為 STATEMENT 模式

解析binlog內(nèi)容,完整的記錄了update語句。

2.2 binlog_format 為 MIXED 模式

當 row_format 為mixed或者statement格式是,binlog 的大小發(fā)生改變,不管是否真的更新數(shù)據(jù),MySQL都記錄執(zhí)行的sql 到binlog。
三 小結(jié)
基于row模式時,server層匹配到要更新的記錄,發(fā)現(xiàn)新值和舊值一致,不做更新,就直接返回,也不記錄binlog。
基于 statement 或者 mixed格式,MySQL執(zhí)行 update 語句,并把更新語句記錄到binlog。
那為什么問題來了 statement 和 mixed 會完整的記錄sql語句呢?且聽下回分解吧,因為我要解析源碼,使用Clion 編譯MySQL 調(diào)試環(huán)境還沒成功。
以上就是實例驗證MySQL|update字段為相同的值是否會記錄binlog的詳細內(nèi)容,更多關(guān)于MySQL update字段的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. SQL SERVER偏移函數(shù)(LAG、LEAD、FIRST_VALUE、LAST _VALUE、NTH_VALUE)2. DB2 與 Microsoft SQL Server 2000 之間的 SQL 數(shù)據(jù)復制3. 細化解析:Oracle 10g ASM 的一點經(jīng)驗4. DB2 XML 全文搜索之為文本搜索做準備5. SQL Server使用CROSS APPLY與OUTER APPLY實現(xiàn)連接查詢6. Oracle 數(shù)據(jù)字典7. 理解 DB2 中列組統(tǒng)計信息8. SQL Server還原完整備份和差異備份的操作過程9. MyBatis中$和#的深入講解10. Mybatis環(huán)境搭建及文件配置過程解析

網(wǎng)公網(wǎng)安備