翻译文档:TokuMX的分形索引是什么?
本文翻译自?TokuMX Fractal Tree(R) indexes, what are they? TokuMX的一大创新在于,它打破了一条长久存在的关于数据库的规则:要保证好的写入性能,索引的工作集应当能够放在内存里。标准答案是这样的:如果索引的工作集比内存要大,写入就需要执行I/O,I/
本文翻译自?TokuMX Fractal Tree(R) indexes, what are they?
TokuMX的一大创新在于,它打破了一条长久存在的关于数据库的规则:要保证好的写入性能,索引的工作集应当能够放在内存里。标准答案是这样的:如果索引的工作集比内存要大,写入就需要执行I/O,I/O就会成为限制因素,性能就会下降。所以,要么让索引小到能全部放进内存,要么提供一种索引写入模式,避免工作集过大,比如MongoDB所采用的,内存中只为最近插入的数据保存索引。
但对TokuMX来说,这是绝对不成立的。依靠TokuMX所提供的创新性的分形树索引,索引的工作集可以比内存更大,同时写入性能不受影响。分形树索引为什么在重度写入(无论是MongoDB还是MySQL)的评测中能表现优异,原因就在这里。
其他数据库仍在苦苦挣扎时,TokuMX是如何提供这种写入性能的?做法就是将众多数据库(MongoDB, MySQL, BerkelyDB等等)使用的主要存储结构——B树索引,替换成为写入优化的数据结构——分形树索引。
“为写入优化的数据结构”意味着什么?
为了解这一点,首先你需要理解,为什么B树索引在索引超出内存限制时的表现会变差?下面是B树的图。
B树是种简单(同时美观)的数据结构。在B树中,内部节点存储支点(Pivot)及指针,叶子节点存储全部真正的数据。在B树上插入时,需要找到数据对应叶子节点,再将数据写入。如果所有节点都在内存里,这样做的速度是很快的。但是如果大部分数据不在内存里(在上图中,只有内部节点和极少数叶子节点在内存里),检索叶子节点就需要执行I/O操作。其实,基本上所有的插入都会执行I/O操作。I/O的瓶颈就从这里来。写入性能下降的根源就在这里。如果硬盘每秒可以执行数百次I/O操作,那么B树充其量也只能执行这么几百次写入操作。所以MongoDB和MySQL会在iiBench测试中败下阵来,自然而然地,用户会被告知“应当把索引的工作集保存在内存里”。
那么,分形树索引的速度为什么会快很多?简单说,它大量减少了I/O操作。下面解释原因。
分形树索引和B树索引的主要差别,解释了在内部节点中的写入性能差别。
- 使用B树时,内部节点只保存支点和指向各子节点的指针。
- 使用分形树索引时,内部节点保存支点、指针,以及各子节点的缓冲区。
请注意,在上图中,每个内部节点中都有其子节点对应的缓冲区(灰色)。
依靠缓冲,写操作可以累积起来批量执行,所以整个过程是这样的:
- 从根节点出发,找到应当向下开始遍历的那个子节点
- 将待定(pending)的写操作加入缓冲区
- 如果该子节点对应的缓冲去还有空间,返回。否则,将待定的写操作刷到下一层节点的缓冲区中,腾出空间用于未来的写入。
在根节点执行刷缓冲区,可能导致一系列的缓冲区刷新。也就是说,在根节点刷缓冲区可能将大量数据刷向其子节点,结果子节点的缓冲区也满了,于是它们也需要刷缓冲区。这种情况会持续发生,最终刷到叶子节点为止。
这种算法为什么会提供如此好的性能呢?简单说是减少了I/O(真的,关键就在I/O)。I/O的代价日益高昂,如果要执行I/O操作,总得有对应的回报来合算。如果使用B树索引,每插入一小篇文档,或者一行数据,或者一个键值对,就需要执行一次I/O。如果使用分形树索引,可以假设根节点是常驻内存的,所以我们知道,如果在某次写入时引发了了I/O操作,其实是写入了一整个缓冲区的数据。这可能包含很多文档(或者很多行,很多键值对…)。因为每个I/O操作其实归拢了很多写入,所以分形树索引大大减少了I/O操作的数量,也就解除了B树索引中的I/O瓶颈。
因为I/O的减少,分形树索引不会要求索引必须小于内存。即使超过内存的限制,TokuMX依然可以维持很高的写入性能。
关于这种算法,还有一点也值得一提,如果数据都存在内存里,在写入性能上,分形树索引相对B树索引并没有算法上的优势。如果内存足够大,从算法来分析,B树和分形树都很快。
原文地址:翻译文档:TokuMX的分形索引是什么?, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

ccsvchst.exe是一种常见的进程文件,它是SymantecEndpointProtection(SEP)软件的一部分,而SEP则是一款由著名的网络安全公司Symantec开发的终端保护解决方案。作为该软件的一部分,ccsvchst.exe负责管理和监控SEP的相关进程。首先,我们来了解一下SymantecEndpointProtection(

edge浏览器自带了翻译功能让用户们可以随时随地的进行翻译,为用户们带来了极大的便利,可也有不少的用户们表示自带的翻译网页不见了,那edge浏览器自带的翻译网页不见了怎么办?下面就让本站来介绍一下edge浏览器自带的翻译网页不见了怎么恢复方法吧。 edge浏览器自带的翻译网页不见了怎么恢复方法 1、检查是否启用了翻译功能:在Edge浏览器中,点击右上角的三个点图标,然后选择“设置”选项。在设置页面的左侧,选择“语言”选项。确保“翻译&rd

本文将介绍如何解决在MicrosoftWord中出现的内存或磁盘空间不足以重新分页或打印文档的问题。这种错误通常会在用户尝试打印Word文档时出现。如果您遇到类似的错误,请参考本文提供的建议进行解决。内存或磁盘空间不足,无法重新分页或打印此文档Word错误解决MicrosoftWord打印错误“没有足够内存或磁盘空间重新分页或打印文档”的方法。更新MicrosoftOffice关闭占用内存的应用程序更改您的默认打印机在安全模式下启动Word重命名NorMal.dotm文件将Word文件保存为另一

它是395个字,就是495个这篇文章将向您介绍如何在Word文档中添加红线。在文档中添加红线是指对文档进行修改,以便用户可以清楚地查看所做的更改。这项功能在多人共同编辑一个文档时非常重要。redline是什么意思标记文档加红线是指使用红线或标注来指示对文档的更改、编辑或修订。这个术语的灵感来源于使用红色笔在打印文档上做标记的做法。红线批注被广泛应用在不同场景下,如:在编辑文档时为作者、编辑和审阅人清楚地显示建议的更改。在法律协议或合同中提出变更和修改对论文、演讲等提出建设性的批评和建议。如何给W

7月22日消息,今日,小米澎湃OS官微宣布小爱翻译迎来升级,实时字幕新增日韩语翻译,无字幕视频、直播会议实时转录翻译。面对面同声传译支持12种语言互译,包括中文、英语、日语、韩语、俄语、葡萄牙语、西班牙语、意大利语、法语、德语、印尼语、印地语。以上功能目前仅支持以下三款新机:小米MIXFold4小米MIXFlipRedmiK70至尊版据悉,2021年,小爱同学AI字幕宣布加入日语、韩语翻译。AI字幕采用小米自研同声传译技术,提供更快速、稳定和准确的字幕阅读体验。1.官方称,小爱翻译不仅能在影音场

搜狗浏览器怎么翻译?我们平时用搜狗浏览器查阅资料的时候,会遇到一些全是英文的网站,因为看不懂英语对网站浏览起来就很困难,这样也十分的不方便,遇到这种情况没有关系!搜狗浏览器有内置翻译按钮,只要点击一下,搜狗浏览器就会自动帮你翻译整个网页?如果你不会操作的话,小编整理搜狗浏览器怎么翻译的具体方法步骤,不会的话跟着我往下看吧!搜狗浏览器怎么翻译1、打开搜狗浏览器,单击右上角的译字图标2、选择翻译文字类型,然后输入需要翻译的文字3、搜狗浏览器就会自动翻译文字,至此操作完成以上搜狗浏览器怎么翻译的全部内

近年来,随着网络技术的不断发展,我们的生活中离不开各种数字工具和互联网。在处理文档时,特别是在写作中,我们经常会使用到word文档。然而,有时我们可能会遇到一个棘手的问题,那就是word文档中的超链接无法打开。下面将就这个问题进行一番探讨。首先,我们需要明确的是,超链接是指在word文档中添加的指向其他文档、网页、目录、书签等的链接。当我们点击这些链接时,我

当您在Windows11/10计算机上打开Word文档时遇到空白页面的问题,可能需要进行修复以解决此状况。造成这一问题的根源多种多样,其中最普遍的原因之一是文档本身损坏。此外,Office文件的损坏也可能导致类似的情况。因此,本文提供的修复方法可能会对您有所帮助。您可以尝试使用一些工具来修复损坏的Word文档,或者尝试将文档转换为其他格式再重新打开。另外,检查系统中的Office软件是否需要更新也是解决此问题的一种方法。通过这些简单的步骤,您可能能够解决Word文档空白打开的Word文档在Win
