MySQL 5.6 新参数对binlog日志量的优化
数据库版本:5.6.*
1.row日志image类型
参数binlog_row_image 控制着这种image类型,默认为FULL(log all columns),即记录before&after images。
该参数还有两种,minimal和noblob,minimal表示只记录after更改后的值,并且如果有主键或者非空唯一索引,则只以该字段作为where条件判断;noblob同full,只是不记录blob、text列。
2.binlog日志
对于insert则没有什么好说的,我们主要重点关注一下update和delete操作。
binlog_row_image=full的情况下,对于update和delete所有的表(包含带有主键、非空唯一索引,唯一索引,没有索引)产生的binlog均一致,binlog情况如下:
--建表语句CREATE TABLE `pk_test`(`id` bigint(20) NOT NULL,`username` varchar(30) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into pk_test values (1,2);insert into pk_test values (2,2);commit;show master statusG;--记录binlog文件和posdeletefrom pk_test where id =1;update pk_test set username='3';commit;mysqlbinlog --no-defaults -v --start-position=637945822/mysqllog/3307/binlog/mysql-bin.000001| more### DELETE FROM `baofeng`.`pk_test`### WHERE### @1=1### @2='2'.....### UPDATE `baofeng`.`pk_test`### WHERE### @1=2### @2='2'### SET### @1=2### @2='3'
从上面我们可以看到,在默认为FULL的binlog_row_image下,无论表有没有主键、唯一索引,全部按照全表字段作为条件,且update会更新全部字段。
binlog_row_image=minimal的情况下:
--建表语句CREATE TABLE `ui_test`(`id` bigint(20) NOT NULL,`username` varchar(30) NOT NULL,UNIQUE (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `ui_test_null`(`id` bigint(20),`username` varchar(30) NOT NULL,UNIQUE key (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `null_test`(`id` bigint(20),`username` varchar(30) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into pk_test values (1,2);insert into ui_test values (1,2);insert into ui_test_null values (1,2);insert into null_test values (1,2);commit;update pk_test set username='4';deletefrom pk_test;deletefrom ui_test;deletefrom ui_test_null;update null_test set username='4';deletefrom null_test;### UPDATE `baofeng`.`pk_test`### WHERE### @1=1### SET### @2='4'....### DELETE FROM `baofeng`.`pk_test`### WHERE### @1=1.....### DELETE FROM `baofeng`.`ui_test`### WHERE### @1=1.....### DELETE FROM `baofeng`.`ui_test_null`### WHERE### @1=1### @2='2'.....### UPDATE `baofeng`.`null_test`### WHERE### @1=1### @2='2'### SET### @2='4'.....### DELETE FROM `baofeng`.`null_test`### WHERE### @1=1### @2='2'
从上面的例子可以看到,当binlog_row_image=minimal的情况下,where条件只有主键或不为空的唯一索引,且只会更新被改变的字段。
3.总结:
在上面的测试我们可以看到,如果采用minimal格式,将减少主键和非空唯一索引表的before值,以及减少所有表update的after未被改变的值。
从效率上来说,减少了网络传输以及加快了update的效率。
参考资料:
https://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#sysvar_binlog_row_image
MySQL 5.6 新参数对binlog日志量的优化的更多相关文章
- MySQL的undo/redo日志和binlog日志,以及2PC
发现自己的知识点有点散,今天就把它们连接起来,好好总结一下. 一.undo log.redo log.binlog的定义和对比 定义和作用 所在架构层级 ...
- mysql主从复制问题之主从两端binlog日志不同步解决方案
主操作: 进入主的数据库查看状态: mysql> show master statusG; *************************** 1. row **************** ...
- mysql做了主从,删除binlog日志
在主服务器操作: 1.查看当前主从库是用哪个binlog日志在做组从 show master status show slave status 2.查看主库的binlog日志 show master ...
- Mysql数据库之Binlog日志使用总结
binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了.下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理: 一.binlog日志介绍1)什么是binlo ...
- 解说mysql之binlog日志以及利用binlog日志恢复数据
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...
- MySQL binlog日志操作详解
MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. bi ...
- (转)Mysql数据库之Binlog日志使用总结
使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...
- 【转】Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
随机推荐
- MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...
- [Java入门笔记] Java语言基础(四):流程控制
流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...
- 常用ADC滤波处理
#define N 70 XDATA WORD Value_buf[N]; XDATA DWORD ADCValue; static BYTE v_gu8cnt=0; static BYTE i=0; ...
- html中的meta详解
1 name=viewport <meta name="viewport" content="width=device-width,initial-scale=1 ...
- hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别
网上找到个描述的很精妙的例子 Child <- many-to-one ->Parent class Child { private ...
- android:exported 属性详解
属性详解 标签: android 2015-06-11 17:47 27940人阅读 评论(7) 收藏 举报 分类: Android(95) 项目点滴(25) 昨天在用360扫描应用漏洞时,扫描结果, ...
- Understanding Binomial Confidence Intervals 二项分布的置信区间
Source: Sigma Zone, by Philip Mayfield The Binomial Distribution is commonly used in statistics in a ...
- Linux下Nginx+Tomcat负载均衡和动静分离配置要点
本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...
- FineUI(专业版)新增 5 款 Metro 皮肤,邀您共赏!
http://fineui.com/demo_pro/ 顺应当前流行趋势,五款Metro皮肤闪亮登场,她们分别是: Metro Blue Metro Dark Blue Metro Gray Metr ...
- 软件工程(FZU2015)赛季得分榜,第9回合
目录 第一回合 第二回合 第三回合 第四回合 第五回合 第6回合 第7回合 第8回合 第9回合 第10回合 第11回合 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分 ...