post

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

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

一、TokuDB的特点:

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

二、TokuDB的安装和使用:

tokudb-install

三、Fractal Tree:

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

Fractal Tree

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

2、Fractal Tree的建立

Fractal Tree的建立

3、Fractal Tree的建立 (cont.)

Fractal Tree的建立 (cont.)

Fractal Tree的建立 (cont.)

4、Fractal Tree上的查询

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占用的存储空间

TokuDB占用的存储空间

六、如何使用TokuDB?

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

附上以上相关内容的ppt文档百度网盘下载地址:RethinkDBTokuDB调研测试报告.pptx

以上内容来源于:淘宝核心系统团队博客

  1. Pingback: TokuDB存储引擎 | Codeba

· 1,233 次浏览