1.1 MVCC:Snapshot Read vs
Current Read 2
…
[获取更多]简介
2012-09-29,MySQL 5.6第一个RC版本发布(MySQL 5.6.7),2013-02-05,MySQL 5.6第一个GA版本发布(MySQL 5.6.10)。总的来说,MySQL 5.6算是一个值得期待的版本,包含了大量的新特性,了解这些新特性,不仅对数据库内核研发有帮助,对于更好的使用MySQL数据库也有着极大的意义。
因此,本人从2012年初开始,就一直关注MySQL 5.6版本的各个新特性,阅读每一个5.6版本相关的相关博文,下载其最新的版本进行测试验证,积累下了一定的心得与收获,形成了这个介绍MySQL 5.6新特性深入剖析的PPT。本PPT一共分为两期:分别是InnoDB引擎以及MySQL Server。
本次为第一期,分享 MySQL 5.6 InnoDB引擎中的性能优化与功能增强。性能优化包括:Read-Only Transaction,Buffer Pool Flushing,Page …
[获取更多]
背景
MySQL 5.6版本,新增了一个NoSQL的接口,通过将memcached嵌入到MySQL系统之中,用户可以直接使用memcached接口直接操作MySQL中的InnoDB表,绕过MySQL Server层面的SQL解析,优化,甚至绕过InnoDB Handler层,直接操作InnoDB内部的方法,从而达到更优的响应时间与效率。关于此功能的官方介绍,请见:InnoDB Integration with memcached 。嵌入memcached之后,整个MySQL的架构如下图所示:
本文接下来的部分,将从源码的角度,详细分析InnoDB Integration with memcached的实现细节问题。
导读
…
[获取更多]本期PPT分享内容: InnoDB 日志/回滚段/崩溃恢复的实现详解。第一期分享的内容,是InnoDB与Oracle的Buffer Pool实现对比。而本期,让我们暂时告别Oracle,将心思完全放在InnoDB引擎上。本期的分享,将详细介绍如下内容: 一、InnoDB的日志相关内容:InnoDB有哪些日志?InnoDB的DML操作,会如何记录日志?为何不同的Update操作,性能上会有较大的不同? 二、InnoDB的Redo详解:InnoDB Redo日志的种类?Mini-Transaction是什么?InnoDB的Log Buffer,Log Block的结构是怎样的?如何通过LSN计算对应的日志文件位置? 三、InnoDB的Undo详解:InnoDB的回滚段结构是如何组织的?回滚段页面有哪些类型?事务与回滚段是如何交互的?事务提交、回滚、Purge的操作,分别如何进行? …
[获取更多]InnoDB Adaptive Hash Index调研总结 #InnoDB Adaptive Hash Index# 定义 维护索引叶页面中所有记录的索引键值(或键值前缀)到索引叶页面位置的Hash映射关系,能够根据索引键值(前缀)快速定位到叶页面满足条件记录的Offset,减少了B+树Search Path的代价,将B+树从Root页面至Leaf页面的路径定位,优化为Hash Index的快速查询。 #InnoDB Adaptive Hash Index# 使用 Adaptive Hash Index是针对B+树Search Path的优化,因此所有会涉及到Search Path的操作,均可使用此Hash索引进行优化,这些可优化的操作包括:Unique Scan/Range Scan(Locate First Key Page)/Insert/Delete/Purge等等,几乎涵盖InnoDB所有的操作类型。 #InnoDB Adaptive Hash Index# 维护 …
[获取更多]MySQL Add Index实现 MySQL各版本,对于add Index的处理方式是不同的,主要有三种: Copy Table方式 这是InnoDB最早支持的创建索引的方式。顾名思义,创建索引是通过临时表拷贝的方式实现的。 新建一个带有新索引的临时表,将原表数据全部拷贝到临时表,然后Rename,完成创建索引的操作。 这个方式创建索引,创建过程中,原表是可读的。但是会消耗一倍的存储空间。 Inplace方式 这是原生MySQL 5.5,以及innodb_plugin中提供的创建索引的方式。所谓Inplace,也就是索引创建在原表上直接进行,不会拷贝临时表。相对于Copy Table方式,这是一个进步。 Inplace方式创建索引,创建过程中,原表同样可读的,但是不可写。 Online方式 这是MySQL 5.6.7中提供的创建索引的方式。无论是Copy …
[获取更多]MySQL Add Index实现 MySQL各版本,对于add Index的处理方式是不同的,主要有三种: Copy Table方式 这是InnoDB最早支持的创建索引的方式。顾名思义,创建索引是通过临时表拷贝的方式实现的。 新建一个带有新索引的临时表,将原表数据全部拷贝到临时表,然后Rename,完成创建索引的操作。 这个方式创建索引,创建过程中,原表是可读的。但是会消耗一倍的存储空间。 Inplace方式 这是原生MySQL 5.5,以及innodb_plugin中提供的创建索引的方式。所谓Inplace,也就是索引创建在原表上直接进行,不会拷贝临时表。相对于Copy Table方式,这是一个进步。 Inplace方式创建索引,创建过程中,原表同样可读的,但是不可写。 Online方式 这是MySQL 5.6.7中提供的创建索引的方式。无论是Copy …
[获取更多]本PPT,简单介绍了MySQL的查询优化,重点在范围查询优化,包括:代价模型;全表扫描代价计算;索引范围扫描代价计算;统计信息;统计信息收集策略;以及MySQL针对查询优化模块的一些优化。希望对MySQL查询优化有所了解的朋友,建议一看! 考虑到本PPT中,目前主要涉及的内容是MySQL的范围查询优化,因此后续本人会对此PPT进行内容优化与扩展,优化已有的内容,新增Join查询优化,以及Oracle查询优化实现的部分对比。新的PPT,将在本人组织的 #数据库内核分享# 的第三期,或者是第四期中交流,敬请期待! 注1:考虑到slideshare长期被墙,本PPT的微盘地址为:微盘下载
数据库内核分享,第一期,“Buffer Pool Implementation InnoDB vs Oracle”的完整PPT,详细介绍了Buffer Pool在InnoDB与Oracle的实现,以及二者实现的不同之处。对朋友们理解两个数据库如何管理内存,有较大的帮助! 注1:此版本,彭立勋 同学做了部分注释,相对更易理解,谢谢立勋! 注2:由于Slideshare长期被墙,墙内的朋友,可以通过微盘地址下载此PPT:微盘下载 注3:此分享的视频,已上传优酷网站,想观看视频的朋友,可点击以下地址:优酷视频
TPCC Consistency 约束验证SQLs 以下,是按照TPCC标准,撰写的验证Consistency的12条SQL,每条SQL返回结果为Empty Sets时,说明此验证通过。 以下所有的SQL,在MySQL + TNT引擎 + TPCC-MySQL + 10-warehouses下执行成功(除了Condition 10,11,12,最终的SQL未能撰写成功)。 Consistency Conditions ————————— Consistency Condition 1 -——————————– – Entries in the WAREHOUSE and DISTRICT tables must satisfy the relationship: – W_YTD = sum(D_YTD) – for each warehouse … 继续阅读 →