6

我正在学习诸如TokuDB中的分形树索引。我对它用于通过大部分时间写入 CPU 缓存而很少写入速度较慢的 RAM 内存来加快写入速度的策略着迷。但是,分形树索引最终确实必须向 RAM 写入大量数据,然后向磁盘写入大量数据,然后在磁盘上完全写入大量数据。在这里我感到困惑。分形树索引可以有效地做到这一点吗?比 B-tree 在最坏情况下更新磁盘更有效吗?此外,巨大的磁盘重写对该数据的查找时间有什么影响?而且,反之亦然,对该数据进行多次查找对大规模重写的过程有什么影响?

作为回答这个问题的上下文,您应该知道:

  • 我在此幻灯片演示中学到的关于分形树索引的所有知识
  • 对于旋转中型硬盘的工作原理,我没有一个好的心智模型。
  • 当我说“巨型重写”时,基本上发生的事情是你有两个相同长度(大小2^largeNumber)的排序数组,你将它们写入一个排序的(大小)数组2^(largeNumber+1)
4

1 回答 1

4

我建议您在http://www.youtube.com/watch?v=88NaRUdoWZM观看我的视频,这可能会让您更好地了解分形树索引的工作原理。当索引不适合主内存时,分形树索引能够缓冲大量消息,当缓冲区溢出时,这些消息会慢慢下推树。当他们最终到达叶子节点时,只有一个 IO 来检索叶子并应用所有消息。分形树索引执行的写入 IO 显着减少,因为它们在单个 IO 上聚合了许多操作,并且写入高度压缩。读取 IO 也显着减少,因为它正在读取高度压缩的数据。

我不确定这是否完全回答了您的问题,但希望它有所帮助。

于 2012-09-14T02:07:55.443 回答