實(shí)例驗(yàn)證MySQL|update字段為相同的值是否會(huì)記錄binlog
一 前言
前幾天一個(gè)開發(fā)同事咨詢我,update 更新字段為相同的值是否會(huì)記錄binlog,我回復(fù)說不會(huì)。
其實(shí) 嚴(yán)格的說這個(gè)答案是不準(zhǔn)確的,說要區(qū)分場景。是否記錄 update 語句到binlog依賴于 binlog_format 的設(shè)置。具體情況 實(shí)踐出真知。
二 測試
2.1 binlog_format 為 ROW 模式
2.2 binlog_format 為 STATEMENT 模式
解析binlog內(nèi)容,完整的記錄了update語句。
2.2 binlog_format 為 MIXED 模式
當(dāng) row_format 為mixed或者statement格式是,binlog 的大小發(fā)生改變,不管是否真的更新數(shù)據(jù),MySQL都記錄執(zhí)行的sql 到binlog。
三 小結(jié)
基于row模式時(shí),server層匹配到要更新的記錄,發(fā)現(xiàn)新值和舊值一致,不做更新,就直接返回,也不記錄binlog。
基于 statement 或者 mixed格式,MySQL執(zhí)行 update 語句,并把更新語句記錄到binlog。
那為什么問題來了 statement 和 mixed 會(huì)完整的記錄sql語句呢?且聽下回分解吧,因?yàn)槲乙馕鲈创a,使用Clion 編譯MySQL 調(diào)試環(huán)境還沒成功。
以上就是實(shí)例驗(yàn)證MySQL|update字段為相同的值是否會(huì)記錄binlog的詳細(xì)內(nèi)容,更多關(guān)于MySQL update字段的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. Microsoft Office Access刪除字段的方法2. SQLITE3 使用總結(jié)3. MySql使用mysqldump 導(dǎo)入與導(dǎo)出方法總結(jié)4. Mybatis批量插入返回插入成功后的主鍵id操作5. MariaDB中1045權(quán)限錯(cuò)誤導(dǎo)致拒絕用戶訪問的錯(cuò)誤解決方法6. MySQL/MariaDB中如何支持全部的Unicode7. MySql關(guān)于null的函數(shù)使用分享8. MySQL數(shù)據(jù)庫字符集修改中文UTF8(永久修改)9. access中顯示MSysObjects系統(tǒng)表的設(shè)置方法10. DB2 V9.5工作負(fù)載管理之閾值(THRESHOLD)
