MySQL5.7 新特性: offline mode

在MySQL 5.7.5中,为server层增加了离线模式(offline mode),以便于管理员的升级维护工作。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.7 新特性: offline mode Post Footer automatically generated by wp-posturl plugin for wordpress.


InnoDB ICP 代码路径

本文简单记录下和Index Condition Pushdown相关的代码路径 原创文章,转载请注明: 转载自Simple Life 本文链接地址: InnoDB ICP 代码路径 Post Footer automatically generated by wp-posturl plugin for wordpress.


Multi Range Read 代码路径

所谓MRR,简单的说就是当使用二级索引进行检索并且查询的列需要回表时,先根据检索到的PK值进行排序,然后再回表依次查询聚集索引,从而避免过多的随机IO。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: Multi Range Read 代码路径 Post Footer automatically generated by wp-posturl plugin for wordpress.


Innodb drop index 流程小记

最近在做一个小特性,让InnoDB支持repair table来重建corrupted的索引,本文描述的是实现过程中遇到的一个小问题,主要和innodb drop index相关的一些随笔记录。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: Innodb drop index 流程小记 Post Footer automatically generated by wp-posturl plugin for wordpress.


库表字符集不一致导致的全表扫描问题

背景: 当数据库的建库字符集和表不一样时,在库下针对表创建存储过程可能导致全表扫描 如下例: drop database if exists xx1; drop database if exists xx2; create database xx1 character set utf8; create database xx2 character set gbk;   然后分别在xx1 和 xx2下执行: CREATE TABLE t1 ( `col1` varchar(10) NOT NULL, `col2` bigint(11) NOT NULL DEFAULT ‘0’, PRIMARY KEY (`col1`)) ENGINE=InnoDB DEFAULT CHARSET=gbk; insert into t1 values (‘ac’,2),(‘del’,3),(‘sp’,5),(‘tr’,12); DELIMITER […]


MySQL5.6.23: fix “UNABLE TO PURGE A RECORD”

本文简述下之前我们线上频繁碰到的“UNABLE TO PURGE A RECORD”的原因 ################################################### 线上实例错误日志中偶尔出现 “UNABLE TO PURGE A RECORD”,从官方bug系统来看,很多用户都遇到了类似的问题。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.6.23: fix “UNABLE TO PURGE A RECORD” Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL: 对超长blob列的redo log限制

我们知道,Innodb使用固定长度的N个iblog文件来存储redo log,文件空间可以被复用。这些被复用的空间redo需要保证已经做了checkpoint。 假定我们的iblog大小为1G,如果我们更新一个非常大的字段,就有可能覆盖掉未checkpoint的redo log,因为Innodb并没有根据其可能产生的log长度来判断redo log空间是否够用。而只是保证会预留一定比例的redo log空间。详细见bug链接:http://bugs.mysql.com/bug.php?id=69477 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL: 对超长blob列的redo log限制 Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL 5.7新特性:保持主备事务执行顺序一致

我们知道从5.6开始,MySQL支持多线程复制,到5.7版本又引入了基于GROUP COMMIT的并发事务分发机制。这意味着没有冲突的事务可以在备库并发执行。很显然,备库的事务提交顺序和主库是不能保证一致的。 这可能带来一些问题,尤其是事务之间有一定的业务关联时,提供读访问时可能会带来业务上的不一致问题。因此在MySQL 5.7.6版本,引入了一个新的特性,来保证主库和备库的commit顺序是一致的。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL 5.7新特性:保持主备事务执行顺序一致 Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL HANDLER语法及源码实现(简单介绍)

MySQL的handler接口算是比较偏的部分,可能是因为不是标准SQL,生产环境或者线上很少看到有人使用。本文以‘小白’视角,记录下如何使用HANDLER,以及相关的代码简单介绍。 本文的源码部分基于5.7.5,从5.7开始也支持对分区表的HANDLER操作了。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL HANDLER语法及源码实现(简单介绍) Post Footer automatically generated by wp-posturl plugin for wordpress.


MySQL 多事务引擎XA

有那么一坨代码,他虽然在那里,我们却很少用到。。那就是MySQL的多XA事务引擎特性支持。。本周我们来探讨下TC LOG MMAP的代码实现。由于工作的关系,这块很少涉及,正好趁着周末补补漏。   本文分析的代码基于支持Tokudb的MySQL5.6.16 和MySQL 5.7.5;原因是官方MySQL还不包含多个事务引擎,因此代码压根走不到TC LOG MMAP. 但是MySQL5.7又Fix掉了相关的XA BUG (bug#47134),因此本文贴出的代码部分以MySQL5.7.5为主,调试部分以我们支持TOKUDB的MySQL5.6.16内部分支为主。 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL 多事务引擎XA Post Footer automatically generated by wp-posturl plugin for wordpress.