网站的高性能架构-存储性能优化

本文详细介绍了存储领域的关键技术,包括机械硬盘与固态硬盘的工作原理对比、B+树与LSM树在数据索引中的应用,以及RAID技术的不同级别及其特点。通过对这些技术的深入剖析,帮助读者理解存储系统的内部运作。
1、机械硬盘和固态硬盘
机械硬盘:通过马达驱动磁头臂,带动磁头到指定的磁盘位置访问数据。由于每次访问数据的时候都是通过移动磁头臂,因此机械硬盘在对于顺序读写(连续访问的数据存储在连续的磁盘空间上)的效率远高于随机读写(连续访问的数据在不连续的磁盘空间上)快的多,因为随机读写的时候,没次读写的时候磁头臂都可能要移动的次数差距都很大
固态硬盘:又称作SSD或者Flash硬盘,这种硬盘没有机械装置,数据存储在可持久的记忆硅晶体上,因此可以像内存一样快速随机访问。而且SSD具有更小的工号和更少的磁盘震动和噪声。但是SSD成本比较昂贵。
2、B+树 和 LSM树
由于机械硬盘对于顺序的读写远高于随机读写。这个特性对磁盘存储结构和算法的选择甚大。
为了改善数据访问特性,文件系统或数据库系统会对数据排序后存储,这样就需要保证数据在不断更新、插入、删除后依然有序,传统关系数据库采用B+树索引。
B+树:索引上的每个节点都对应着磁盘中的一个磁盘页,当我们利用索引查找的时候,不能把索引全部加载到内存里,那样太大了。能做的是只能逐一加载每个磁盘页。从根节点开始查找,然后不断的定位下一级的节点位置,并将其所在的磁盘页加载出来。目前大多数数据库采用两级索引的B+树,树的层次最多三层,所以我们一般只要通过3次磁盘访问就能找出对应的磁盘页。然后再通过一此磁盘访问进行文件读操作,如果更新数据的话,还要再通过一次磁盘访问进行文件写操作。
但是如果不用索引的话,也就不用B+树。对于每次随机访问的话,机械硬盘在数据随机访问的时候性能较差,每次数据访问都需要多次访问磁盘才能访问到数据,所以说索引的访问效率更高。
LSM树:可看做是一个N阶合并树。数据写操作的时候(包括插入、修改、删除)都在内存里操作,并且都会创建一个新记录(修改记录新的数据值,而删除会记录一个删除标志),这些数据在内存中仍然还是一棵排序树。当数据量超过内存设置的范围后,会将内存上的这颗排序树磁盘上最新的排序树合并。当磁盘上这颗排序树的数据量也超过设定的范围后,和磁盘上下一级的排序树合并。合并过程中,会用最新更新的数据覆盖旧的数据(或者记录为不同版本)。在需要进行度操作的时候。总是从内存中的排序树开始搜索,没有再从磁盘上的排序树顺序查找。
在LS树上进行一次更新不需要磁盘访问,直接在内存上就可完成,速度远高于B+树。当数据访问以写操作为主,而读操作则集中在最近写入的数据时,使用LSM树可以极大程度的减少磁盘的访问次数,加快访问速度。
3、RAID和HDFS
RAID用来改造磁盘的访问延迟,增强磁盘的可用性和容错能力。
RAID0:数据在从内存写入到磁盘的时候,根据磁盘数量会将数据分成N份,这些数据会被并发的写入到N块磁盘中。这样数据整体写入速度是一块磁盘的N倍,读取时也一样,因此RAID0具有极快的读写速度,但是RAID0不做备份,N块磁盘中只要有一块损坏,数据完整性就会被破坏。
RAID1:数据在写入磁盘的时候,将一份数据同时写入到两块磁盘中,这两块磁盘中的数据都是相同并完整的。这样其中一块磁盘损坏都不会导致数据丢失。插入一块磁盘就可以通过复制数据的方式自动修复,具有极高的可靠性。
RAID2:集合RAID0和RAID1,数据写入磁盘的时候,会将所有磁盘平均分成两份,数据被分成N份,并同时写入到每个磁盘中的两半里,这样既可以保证并发写入,也可以保证数据的高可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值