具有高扩展性的存储引擎:TokuDB

TokuDB是什么?TokuDB是一个应用在MySQL和MariaDB中的存储引擎,它使用索引来加快查询速度,具有高扩展性并支持Hot Schema Modification。如果你的记录数量过亿、存储旧的记录或想要缩小数据占用的存储空间,很适合使用TokuDB。本文内容摘自淘宝核心系统团队博客分享的文档,最下面有原文地址及文档下载。

一、TokuDB的特点:

- 插入性能加快20到80倍
- 压缩数据减少存储空间
- 数据量可扩展到几个TB
- 不会产生索引碎片
- 支持Hot Column Addition, Hot Indexing和MVCC

二、TokuDB的安装和使用:

具有高扩展性的存储引擎:TokuDB_第1张图片

三、Fractal Tree:

Fractal Tree是TokuDB中使用的索引结构,是TokuDB安身立命的根本,插入性能可以匹配B树最好的情况,高于B树最差情况两个数量级。

Fractal Tree

1、Fractal Tree结构特点
- 由多个有序的数组构成,大小呈指数级增长
- 数组要么全空,要么全满
- 数据插入到最小的数组,如果空间不够就将数据进行Merge

2、Fractal Tree的建立

3、Fractal Tree的建立 (cont.)

具有高扩展性的存储引擎:TokuDB_第2张图片

4、Fractal Tree上的查询

四、TokuDB提供的特殊支持:

Hot Index Creation,TokuDB允许在已有table上创建索引,同时在索引创建的过程中可以进行insert和query操作。
- 需要设定服务器变量set tokudb_create_index_online=on
- 只能使用create index命令

Hot Column Addition and Deletion(HCAD),TokuDB允许在已有table上添加或者删除属性列,同时只在很短的时间内阻塞update和query操作。
- HCAD会获取一个表锁,用于将脏页刷到外存,所以会暂时阻塞其他操作

五、TokuDB占用的存储空间:

具有高扩展性的存储引擎:TokuDB_第3张图片

六、如何使用TokuDB?

如果你要存储blob,不要使用TokuDB,因为它限制记录不能太大;
如果你的记录数量过亿,使用TokuDB;
如果你注重update的性能,不要使用TokuDB,它没有Innodb快;
如果你要存储旧的记录,使用TokuDB;
如果你想要缩小数据占用的存储空间,使用TokuDB;

 

转自:http://www.izhangheng.com/highly-scalable-storage-engine-tokudb/

你可能感兴趣的:(具有高扩展性的存储引擎:TokuDB)