设为首页 加入收藏

TOP

MySQL 5.7贴心参数之binlog_row_image
2016-12-11 08:14:59 】 浏览:3276
Tags:MySQL 5.7 贴心 参数 binlog_row_image

相信大家都了解mysql binlog的格式,那就是有三种,分别是STATEMENT,MiXED,ROW。各有优劣,具体的请大家自行查阅资料。在MySQL 5.7版本以前,虽然ROW格式有各种各样的好处。


1. 比如加快从库重放日志;ROW直接调用mysql的存储引擎接口(handler API) 来执行行的插入、删除和更新,完全跳过了mysql的优化器的处理逻辑。


2. 保证主从数据的一致性。记录的每一行的变更。


3. 可以通过对binlog的逆向解析实现闪回功能。


那么实际上还是有一个缺陷,那就是由于记录的是每一行的变更,会带来磁盘IO上的开销,同时由于binlog日志变大,网络开销也变大了。那么在MySQL 5.7以后binlog的格式默认就是ROW了,同时引入了新的参数binlog_row_image,这个参数默认值是FULL,其还有一个值是minimal。由于5.7版本的其他功能都有人提到了,这个没人提到,我也简单的介绍一下,哈哈。


FULL记录每一行的变更,minimal只记录影响后的行。下面简单的测试一下大家就明白了。


解析binlog看看啥情况


下面设置一下binlog_row_image的值为minimal


再解析binlog看看啥情况:


可以清楚的看到,当把binlog_row_image设置为minimal以后,binlog记录的就只是影响后的行,大赞。如此一来使用ROW格式一定是首选了,完全没必要使用STATEMENT,MiXED。不过现在也没有人使用STATEMENT了,所以准确的说就是完全没必要使用MiXED格式了。


总结:


MySQL 5.7是真正的一个里程碑的版本,比如可以在线调整bp pool,在线修改复制过滤,真正意义上多线程复制(5.6是基于库,5.7是基于表),支持bp pool预热,支持undo log回收,支持通用表空间,支持json,支持函数索引(通过虚拟列实现),支持只读事务等等等。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL常用函数整理 下一篇InnoDB启用大内存页

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目