其性能特点见:http://www.cnblogs.com/billyxp/p/3567421.html

TokuDB 是一个高性能、支持事务处理的 MySQL 和 MariaDB 的存储引擎。TokuDB 的主要特点则是对高写压力的支持。

总体来说TokuDB具有:

  1、高压缩比,官方宣称可以达到1:12。

  2、高insert性能,官方称至少比innodb高9倍。

  3、可以在线添加索引和字段,速度快。

TokuDB

它架构的核心基于一个不同的、现代的检索方法,名为分形树索引(FTI,Fractal Tree Indexes)。我所说的“不同”在于,大部分流行的存储引擎,比如MyISAM 、 InnoDB,都是基于B树索引。在过去至少30年内,该索引都保持着,作为某种无法挑战的标准。我所说的“现代”,是因为FTI的设计考虑到了写-密集型操作(这种操作在现在的数据系统中出现的越来越频繁)以及最新存储设备易损耗的特性。 两种数据结构都是基于树的,类似地在叶节点中存数数据,并且利用索引Key值加速排序。但是它们通过树来管理与存储数据的方法是不同的。

TokuDB以及它的分形树索引与基于B树的InnoDB相比,使用的块大小更大(更大的叶子节点),进而数据能够得到更好的压缩(使用更小磁盘空间的关键技术),也提高了范围查询的性能。同样重要的是,TokuDB称能够通过一个消息传递系统与“优化的”缓存机制来更好的利用I/O。 尽管在基于传统B树的系统中,对表的一个改变会触发索引的相应更新,TokuDB最初会将每一个改变都当做一条消息。有意思的是,在消息到达相应的叶子节点并作出修改之前,它所带来的改变就已经存在于数据库中了。

于是,数据库的内容则是叶子节点中存储的数据加上消息循环中的数据。这使存储引擎更加敏捷,举例来说,这会在热模式转换(Hot Schema Changes)中发挥重要的作用。 对于优化的I/O缓存系统的读操作,与更大的叶子节点的使用有关。或者如果你愿意的话,也有另外的方法:更有效的方法来使用缓存,使得更大的叶子节点的使用成为可能。这里提到的有效主要指的是带宽使用程度。

需谨记,从消耗的时间来看,对磁盘的I/O远大于对内存的I/O;这就是使用缓存的原因——更频繁的将数据储存于缓冲中(低消耗),就可以减少将缓存“刷到”磁盘的频率(高消耗)。刷到磁盘的缓冲区越满,可以达到的带宽利用率越高。TokuDB试图最大限度的利用缓存,即“对单个I/O进行成千上万次操作”。B树的问题是因为设计的原因,它很难实现一个有效的缓存系统,而人们经常习惯将不太满的缓存刷到磁盘。因此,对于B树来说,更好的方法是在B树中维持小一些的叶子节点,这样产生的副作用是使压缩变差。

Tokutek的工程负责人Tim Callaghan 11月份时在Percona Live London解释了对比的各种不同,比我解释的要好得多, 优化使用I/O,使得写操作密集型应用受益良多。目前在我们的Percona Cloud Tools (PCT)中使用TokuDB,用来存储和分析来自MySQL服务器的查询日志。选择TokuDB作为PCT存储设备的另一个好处是压缩性能更好,如果没有这个的话,在PCT服务beta阶段,我们会在支持的用户数上受到很多限制。压缩的影响究竟有多大?就像MySQL中的其他事情一样,这取决于你的模式。

据Shlomi Noach报导,他能够把未压缩的InnoDB引擎的4TB数据(或者是使用KEY_BLOCK_SIZE=8压缩的InnoDB引擎的2TB数据)压缩到200GB。这样能够给大家一个感性的认识。 压缩本身就是TokuDB一个很吸引人的特性,但是对于存储空间的大小不是问题的应用场景,这个存储引擎也做的不错。对于写(INSERT)性能而并非网络是性能瓶颈的场景来说,对I/O的优化能够延迟副本操作。如果你需要对一个大表添加一列或者添加第二索引,“热模式转换”功能将助力不少。对于闪存磁盘的持久性也有不少重要影响。Mark Callaghan对于之前的文章做过以下评论:“与InnoDB相比,全磁盘服务器使用TokuDB支持更大的负载压力,全闪存的服务器使用TokuDB是通用的——2倍以上的压缩率(与InnoDB的压缩相比)以及批量的写操作(更多是顺序写)意味着你你可以买更少的闪存、这些闪存可以用更久、买更为廉价的缓存也能够用”。另外,不要忘了TokuDB中让Vadim最赏心悦目的一个特性:支持使用SHOW PROCESSLIST跟踪查询的实时进展。

摘自: http://www.searchdatabase.com.cn/showcontent_85622.htm

更多见分形树这个数据结构的介绍。

TokuDB介绍——本质是分形树(一个叶子4MB)+缓存减少写操作的更多相关文章

  1. TokuDB的索引结构–分形树的实现

    分形树简介 原文:http://www.bitstech.net/2015/12/15/tokudb-index-introduction/ 分形树是一种写优化的磁盘索引数据结构. 在一般情况下, 分 ...

  2. 分形树Fractal tree介绍——具体如何结合TokuDB还没有太懂,先记住其和LSM都是一样的适合写密集

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  3. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

  4. [二叉树算法]让树所有叶子节点连成一个单链表,让rchild作为 next指针

    //让树所有叶子节点连成一个单链表,让rchild作为 next指针 LNode *head=null,*pre=null;//全局变量 LNode *InOrder(BTNode *T){ if(T ...

  5. B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因

    今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片, 这和磁盘碎片.内存碎片产生原理是类似的,这些存储碎 ...

  6. 【数据结构与算法Python版学习笔记】递归(Recursion)——定义及应用:分形树、谢尔宾斯基三角、汉诺塔、迷宫

    定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决. 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数. 举例 数列求和 def ...

  7. 介绍对称加密的另一个算法——PBE

    除了DES,我们还知道有DESede(TripleDES,就是3DES).AES.Blowfish.RC2.RC4(ARCFOUR)等多种对称加密方式,其实现方式大同小异,这里介绍对称加密的另一个算法 ...

  8. java分形树

    import java.awt.*; import java.awt.event.*; import java.util.Random; import javax.swing.*; /** * * @ ...

  9. 【转载】介绍“Razor”— ASP.NET的一个新视图引擎

    最近在做一个项目,用的MVC razor 视图,因为之前没用这个视图做过,于是查阅文档资料,共享一下. https://msdn.microsoft.com/zh-cn/ff849693 内容主要是讲 ...

随机推荐

  1. CUBRID学习笔记 14 删除主键错误

    发生这样的问题.其实和别的数据库基本原因差不多.  就是外键冲突. 看看有没有外键引用这个表的主键. 然后删除外键. 就可以了 SELECT class_name FROM db_index WHER ...

  2. CUBRID学习笔记 6 修改用户密码

    修改密码 可以在web管理中修改. 还有另外两种体位 1  语句 ALTER USER user_name PASSWORD 'any_password_here_in_single_quotes'; ...

  3. NSCalendar

    1.获取当前时间的年月日时分秒    /*    // 获取当前时间    NSDate *now = [NSDate date];    NSLog(@"now = %@", n ...

  4. C语言程序设计现代方法1,2,3章

    1:浮点型(float)运算比int慢,并且可能存在舍入误差 如float存储0.1,以后使用可能会变成0.099999999987 2:宏定义只用大写,这是大多数C程序猿遵循的规范! C语言区分大小 ...

  5. HDU1045 Fire Net(DFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit: 2000/1000 MS (Java/Others)  ...

  6. iOS - UIActivityViewController

    前言 NS_CLASS_AVAILABLE_IOS(6_0) __TVOS_PROHIBITED @interface UIActivityViewController : UIViewControl ...

  7. Android activity四种基本启动模式

    standard:默认的模式,每次启动会新创建一个activity对象 singleTop:在当前任务栈中,判断栈顶是否为当前的activity,如果是,就直接使用,如果不是,就会创建新的activi ...

  8. html页面的绝对路径和相对路径

    在用springmvc架构开发网站的过程中,离不开开发前台html页面,html经常需要使用本地相关的资源,如:图片,js,css等,一般情况下,我们可以通过使用相对路径的方式来对这些资源进行指向和访 ...

  9. 【官方方法】xcode7免证书真机调试

    [官方方法]xcode7免证书真机调试 步骤比较简单,我就简单总结一下. 1. 进入xcode,菜单栏选择xcode –> preferences (快捷键 command + ,)在Accou ...

  10. Kafka文件的存储机制

    Kafka文件的存储机制 同一个topic下有多个不同的partition,每个partition为一个目录,partition命名的规则是topic的名称加上一个序号,序号从0开始. 每一个part ...