Tokutek 发布新版本的 TokuDB 和 TokuMX

  • Benjamin Darfler
  • 谢丽

2014 年 11 月 7 日

话题:数据库DevOps语言 & 开发AI

Tokutek已经发布了其存储引擎产品的新版本。TokuDB for MySQL 已经到了 7.5 版本,包含两项重要的性能特性。TokuMX for MongoDB 已经到了 2.0 版本,包含各种新特性,其中包括其本身性能的提升。

对于简单的 select,TokuDB 先前的版本已经支持行的批量获取。Rich Prohaska是 Tokutek 的一名工程师,他解释了这样做的动机:

MySQL 使用 Handler API 从 TokuDB(和其它存储引擎)一次获取一行数据。遗憾的是,就每次 Handler 调用从分形树上获取下一行或上一行数据而言,分形树搜索过于复杂而难以使用。TokuDB 在 Handler 中使用了一个批量获取缓冲区,其中包含了一次分形树搜索的结果。当 MySQL 调用下一个或上一个 TokuDB Handler 而且批量获取缓冲区非空时,就从批量获取缓冲区中弹出一行返回给 MySQL。否则,用一次分形树搜索返回的多行结果填充批次获取缓冲区。

在 TokuDB 7.5 中,该特性经过了扩展,支持更复杂的 select 语句了,包括“INSERT [IGNORE] INTO … SELECT”、“INSERT INTO … ON DUPLICATE KEY UPDATE”、“REPLACE INTO … SELECT”和“CREATE TABLE … SELECT”。

除改进了批量获取特性外,TokuDB 7.5 还引入了执行读取无关复制的功能。Prohaska 是这样阐释该特性的:

当使用基于行的复制时,该行的映像会写入二进制日志,用于写入、删除和更新操作。从节点可以从二进制日志中使用该行映像,从而避免了从表中读取该行。这种读取无关复制的设计可以显著降低从节点的 I/O 负载。

Tokutek 做了一次基准测试,声称使用读取无关复制时性能提升了 20 倍。不过,Tokutek 提醒说,在可以使用该项特性前需要首先满足一些条件

TokuMX 2.0 带来了自己的一套广受欢迎的改进。首先是将Ark 一致性算法用于复制。Ark 算法由 Tokutek 创建,与 MongoDB 的默认算法相比,它可以提供更好的复制保障。尤其是,Ark 可以确保实现了 acknowledged 级别 majority write concern 的写操作将永远不会因为随后的故障回滚。

除了 Ark 算法,TokuMX 2.0 还增加了其它两项重要特性。第一项是,分区集合增加了分片支持。分区集合考虑了数据的范围删除,这在对时间序列数据做时效处理时尤其重要。第二项是,TokuMX 现在支持 MongoDB 2.4 的所有地理索引和查询特性。

最后,TokuMX 2.0 增加了快速更新支持。Tokutek 声称,这带来了 10 倍的性能提升。在 TokuMX 先前的版本中,更新会执行一个查询读取现有文档,然后更改相关索引。借助快速更新,如果更新没有更改任何索引字段,那么开始时的查询就可以完全避免。

TokuDB 和 TokuMX 基于 Tokutek 的分形树索引技术。TokuDB 遵循 GPLv2 许可协议,TokuMX 遵循 AGPL 许可协议。

查看英文原文:Tokutek Releases New Versions of TokuDB and TokuMX

数据库DevOps语言 & 开发AI