你需要知道的MySQL开源存储引擎TokuDB

来源:TechTarget中国  
2014/10/24 8:47:27
在四月份的Percona Live MySQL会议上, TokuDB庆祝自己成为开源存储引擎整一周年。我现在仍能记得一年前它刚创建时的官方声明与对它的期望。当时的情况非常有意思,因为它拥有帮助MySQL管理大数据的潜力,而这是InnoDB无法做到的。

本文关键字: MySQL 大数据 存储 TokuDB

尽管在基于传统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跟踪查询的实时进展。

展望

Tokutek擅长打破传统,并从其他角度出发找到了TokuDB发展中的问题。它受益于MySQL的开放性,使用它的引擎API实现了一个完全不同的方案,该方案脱胎于对现实的深思熟虑--更快的多核CPU、现代却又“脆弱”的存储设备以及对“大数据”的渴望。当然,它也受益于对基于B树的存储引擎的观察,该引擎在过去数十年内处理了不断进化的数据,伴随着新方法和新算法到来,一直让事情变得更加简单。与InnoDB相比,TokuDB更容易进行调优:我统计过共有40个“tokudb_”变量,而“innodb_”有超过100个。但是这还需要时间的考验。尽管我们并不是在讨论一个崭新的引擎(Vadim在5年前就记录过他对该引擎的使用经历),但该引擎最近变成了开源的、公共的,并处于初始阶段。尽管在稳步发展,我们也还是能看到很多未解决的bug.

令人担忧的是目前并没有支持TokuDB的开源热备份软件。尽管有一个“可插拔备份工具标准”在GitHub上提供有HotBackup的API,而目前唯一一个可能存在的热备份方案存在于TokuDB的企业版本中。TokuDB的设计并不适用于“拷贝数据库文件、然后在把存有数据库变化的日志应用到文件上”这样的备份方案,而这正是MySQL Enterprise Backup及Xtrabackup的工作方式,所以现在仍然没有希望,简单扩展一个已存在的开源软件来就可以支持TokuDB,如Percona XtraBackup 之类的软件。

我们将充满希望的看到一个新的开源备份软件到来,它将在不久的未来使用对外的API来实现,但是现在看来多数软件还是基于快照的工具,停留在文件系统水平,如mylvmbackup和 xfs_freeze,它们可以暂时作为未来新方法的替代方案。

共2页: [1]2 下一页
责编:李玉琴
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918