- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HF Tree 一种闪存数据库的高更新性能索引
HF-Tree:一种闪存数据库的高更新性能索引结构
2011年11月25日
HF-Tree:一种闪存数据库的高更新性能索引结构
2011-11-25 17:11:49| 分类: 默认分类| 标签:|字号大中小 订阅 摘要:随着电子技术的发展,闪存作为一种新型的电子存储设备具有高速的访问速度和无机械延迟的特性.但是由于闪存高昂的写操作代价,传统的基于磁盘的索引结构如果直接应用在闪存上会导致极差的更新性能.提出一种新颖的索引结构HF-Tree,通过组提交、更新合并以及多级延迟的方式来提高更新性能.HF_Tree能够有效地克服闪存和现有基于磁盘索引之间的不匹配性的问题.通过和经典的BFTL及IPL索引的性能比较,实验结果充分显示了HF-Tree优越的更新和查询性能.此外HF-Tree能够有效地减少撩除次数,从而延长闪存的使用寿命.
关键词:闪存;数据库;索引;更新;擦除
0 引言
在过去的20年中,由于磁盘的机械延迟特性使得CPU和磁盘之间速度的不一致性变得越来越明显.所以对10带宽有大量需求的数据密集型应用,比如大型数据中心都努力寻求更快的存储设备.幸运的是闪存作为一种新型的电子存储设备能够提供高速的IO性能,其读速度是磁盘的上百倍.原因在于闪存是一种纯电子设备,在读取数据时不存在磁盘中效率低下的机械延迟.此外其容量从1999年开始每年都翻一番,三星公司已经发布了256GB的闪存硬盘.由于高速IO性能和迅速增加的容量,闪存被普遍认为是取代磁盘成为新一代数据存储设备的理想选择.
数据库是广泛应用在大型数据中心用来管理数据的重要工具.随着闪存取代磁盘成为新的数据库存储设备,数据库不可避免地需要移植到闪存上.但是如果直接将目前的数据库应用在闪存上,其性能特别是更新性能,并不能获得相应于闪存和磁盘IO性能比值而带来的提高.在最坏的情况下,例如小的随机写密集的应用,数据库在闪存上的性能还不如在磁盘上.其中重要的原因是现有数据库索引结构和闪存物理特性之间的不匹配性.B+树索引是一种被广泛应用在现有的数据库中的索引结构.然而传统的B+树索引是针对磁盘的物理特性而设计的.B+树为了维持其本身的平衡结构会产生大量的随机写.
众所周知,随机写是导致闪存写性能低下的主要原因,因为随机写容易导致闪存的擦除和大量数据的移动.当B+树应用在闪存上时,其产生的大量随机写导致索引更新性能的低下.总的来说,索引更新特点和闪存特性之间的不匹配性导致了目前数据库不能充分发挥闪存应有的高速物理特性.为了解决闪存索引的更新问题,本文提出一种高更新效率的索引结构HF—Tree,同时保持现有索引结构高效查询效率.HF—Tree由BF-Tree和Tri-Hash两部分组成.本索引结构能够充分利用B+一Tree索引的高速查询性能和Hash索引的高速更新性能.BF—Tree通过对传统的B+一Tree应用块存储模型及懒惰分裂合并机制从而有效地支持查询和减少更新的代价.Tri-Hash通过3层级联Hash结构来有效地从内存到闪存减少和延迟写的操作,从而提高更新的性能.本方法能够有效地解决目前基于磁盘的索引结构与闪存物理特性之间存在的问题,从而获得高速的更新性能和查询性能.本文主要的贡献如下:
1.高速更新性能.相比较于将数据逐个更新到索引中,Tri-Hash通过块提交和写延迟的方式能够有效地提高更新的性能.
2.高效的查询性能.本方法通过Tri—Hash来获取最新数据,通过BF-Tree来查询未修改数据,从而有效地提高了查询性能.
3.低垃圾回收成本.本方法将更新后的数据以块为单位写入到闪存中,同时在数据移动时也以块为单位,有效地避免了小的写操作,减少了垃圾数据.
1 索引设计挑战
本节我们简单回顾闪存和磁盘10操作上的不同,并分析其给索引设计带来的挑战.
1.1读写速度不一致
磁盘具有相同的读写速度,但是闪存的读写速度不一致.根据Samsung K9WAG08U1A数据手册[4],闪存读的速度是写的8倍,而写又是擦除的8倍.因此基于闪存的索引结构应该尽量减少写,适当增加读来提高索引的性能.
1.2重写之前必须擦除
不像磁盘可以原地更新数据,闪存在重写一页的数据前必须先将该页所在的块全部擦除.擦除操作不仅代价较高而且粒度较大,容易导致数据的大量移动,因此闪存通常采取异地更新的策略.异地更新给索引设计带来最大的挑战是级联更新,即叶子节点的更新会导致所有祖先节点的更新,引发大量的随机写操作.因此如何避免因为级联更新而导致写性能的大幅度下降是闪存数据库索引设计的一个重要方面.
1.3磨损平衡
众所周知,闪存的每个块具有有限的擦除次数,一般
文档评论(0)