LSM-tree 3.2 Comparison of LSM-tree and B-tree I/O costs

翻译内容

3.2 Comparison of LSM-tree and B-tree I/O costs

我们将考虑索引操作的I/O成本,我们称之为可合并操作:插入、删除、更新和长延迟查找。下面的讨论给出了一个比较lsm树和b树的分析。(有道翻译)

B-tree Insert Cost Formula.

考虑执行b树插入的磁盘臂租用成本。我们必须首先访问树中应该放置条目的位置,这需要向下搜索树中的节点。我们假设对树的连续插入是在叶级的随机位置,因此访问路径中的节点页不会因为过去的插入而始终驻留在缓冲区中。键值不断增加的连续插入(即右位插入)是不符合这一假设的一种相对常见的情况。我们注意到,这种右插入情况已经可以被b树数据结构非常有效地处理了,因为当b树向右一致增长时,几乎没有I/O;事实上,这是发生b树加载的基本情况。还有许多其他建议的结构可以通过不断增加的[8]值来处理日志记录的索引。(有道翻译)

在[21]中,用De表示的b -树的有效深度被定义为在b -树的目录层向下进行随机键值搜索时,在缓冲区中未找到的页面的平均数量。对于例1.2中用于索引Account-ID||Timestamp的b -tree, De的值通常为2左右。(有道翻译)

为了执行对b -树的插入操作,我们对叶级页(De I/O)执行键值搜索,更新它,并(在稳定状态下)写出相应的脏叶页(1 I/O)。我们可以表明,相对不频繁的节点分裂对我们的分析有不显著的影响,因此忽略它们。在这个过程中读和写的页面都是随机访问,开销cost -in,因此B-tree插入的总I/O开销cost -in是:(有道翻译)

(3.1) COSTB-ins=COSTP.(De+1)

LSM-tree Insert Cost Formula.

为了评估一次插入lsm树的成本,我们需要考虑多次插入的摊销,因为对内存组件C0的一次插入只是偶尔有任何I/O影响。正如我们在本节开始时所解释的,LSM树相对于b树的性能优势基于两种不同的批处理效果。第一个是已经提到的一页输入输出成本降低,成本为π。第二种方法是基于将新插入的项合并到C1树中的延迟,通常允许大量的项在C0中进行ac累积;因此,在C1树叶子页从磁盘到内存并返回的过程中,有几个条目将被合并到每个C1树叶子页中。相比之下,我们一直假设B-tree叶页在内存中被引用的频率太低,因此不会发生多个条目插入。(有道翻译)

Definition 3.2.1. The Batch-Merge Parameter M.

为了量化这种多条目每叶批处理效果,将给定lsm树的参数M定义为在滚动合并期间插入到C1树的每个单页叶子节点的C0树中的条目的平均数量。我们断言参数M是描述lsm树的一个相对稳定的值。实际上,M的值是由索引条目的大小以及C1树的叶级与C0树叶级的大小之比决定的。我们定义了以下新的尺寸参数:(有道翻译)

Se = entry (index entry) size in bytes
Sp = page size in bytes
S0 = size in MBytes of C0 component leaf level 
S1 = size in MBytes of C1 component leaf level.

则页面的条目数近似为Sp/Se, C0组件中LSM-tree的条目数的分数为S0/(S0 + S1),因此参数M为:(有道翻译)

(3.2) M = (Sp/Se). (S0/(S0 + S1))

注意,与C1相比,组件C0越大,参数m就越大。典型的实现可能有S1= 40。S0和每个磁盘页的条目数Sp/Se为200,因此M = 5。有了参数M,我们现在可以给出一个粗略的公式,计算插入到lsm树中的条目的代价costlsm -in。我们只需摊销将C1叶子节点放入内存的每页成本,然后再写出来,2。代价π,在此期间合并到C1叶子节点的M个插入。(有道翻译)

(3.3) COSTLSM-ins=2.COSTπ/M

注意,在lsm树和b树的情况下,我们都忽略了与索引更新相关的相对不重要的I/ o成本。(有道翻译)

A Comparison of LSM-tree and B-tree Insert Costs

如果我们比较两个数据结构的插入代价公式(3.1)和(3.3),可以看到比率:(有道翻译)

(3.4) COSTLSM-ins/COSTB-ins=K1.(COSTπ/COSTP).(1/M)

其中K1是一个(接近)常数,2/(De + 1),对于我们所考虑的索引大小,其值约为0.67。这个公式表明,插入lsm树的代价与b树中的代价之比与我们讨论过的两种批处理效果中的每一种直接成比例:成本π/ cost,一个小的分数,对应于多页块中的页I/O成本与随机页I/O的比率,以及1/M,其中M是滚动合并期间每页批处理的条目数。通常,这两种比率的乘积将使成本比提高近两个数量级。当然,这种改进只可能在索引作为b树的温度相对较高的情况下实现,因此在移动到lsm树索引时可以大大减少磁盘数量。(有道翻译)

A Comparison of LSM-tree and B-tree Insert Costs

如果我们比较两个数据结构的插入代价公式(3.1)和(3.3),可以看到比率:(有道翻译)

(3.4) COSTLSM-ins/COSTB-ins=K1.(COSTπ/COSTP).(1/M)

其中K1是一个(接近)常数,2/(De + 1),对于我们所考虑的索引大小,其值约为0.67。这个公式表明,插入lsm树的代价与b树中的代价之比与我们讨论过的两种批处理效果中的每一种直接成比例:成本π/ cost,一个小的分数,对应于多页块中的页I/O成本与随机页I/O的比率,以及1/M,其中M是滚动合并期间每页批处理的条目数。通常,这两种比率的乘积将使成本比提高近两个数量级。当然,这种改进只可能在索引作为b树的温度相对较高的情况下实现,因此在移动到lsm树索引时可以大大减少磁盘数量。(有道翻译)

Example 3.2.

如果我们假设示例1.2中的索引占用1gbyte磁盘空间,但需要占用10gbyte才能达到必要的磁盘臂访问速率,那么在节省磁盘臂成本方面肯定还有改进的空间。
如果公式(3.4)中给出的插入成本的比率是0.02 = 1/50,那么我们可以减少索引和磁盘成本:由于紧密打包的条目和降低的磁盘臂利用率,lsm树将只需要占用磁盘上的0.7 GBytes。
然而,我们看到,更有效的lsm树只能将成本降低到磁盘容量所需的水平。如果我们从一个1gbyte的b树开始,它被限制在35gbyte上接收所需的磁盘臂服务,成本提高的比率——1/50就完全可以实现了。(有道翻译)

发现都偷懒太多了,几乎没有自己翻译的
todo:自己翻译

你可能感兴趣的:(LSM-tree 3.2 Comparison of LSM-tree and B-tree I/O costs)