B+树与LSM数
为了改善数据访问特性,文件系统或者数据库系统通常会对数据排序后存储,加快数据的检索速度,这就需要保证数据在不断的更新、插入、删除后依然有需,传统关系数据库的做饭就是使用B+数。
B+树
说白了,B+树就是一棵N叉排序树。以节点为存储单位,从根节点开始检索(节点编号和物理位置),将其加载到数据库,再找子节点,直到找到所需数据。
目前大部分的关系型数据库都采用的二级索引的B+树,树的层次最多三层(所以可能需要5次检索才能更新一条记录)。
LSM树(之前没怎么听说过)
目前大多数的NoSQL(非关系型数据库——Not Only SQL)
LSM可以看作一个N阶合并树。数据操作(插入、修改、删除)都在内存中进行,并且都会创建一个新纪录(修改会记录新的数据值、未删除会记录一个删除标志),这些数据在内存中仍然还是一颗树,当数据量超过设定的内存设定阈值后,会将这棵树和磁盘中最新的的排序树合并。当这棵树排序的数量超过也超过设定阈值后,和磁盘上下一集的排序树合并,合并过程中,会用最新更新的数据覆盖旧的数据(或记录为不同版本)。
当其读操作主要集中在最近写入的数据时,使用LSM树可最大程度减少磁盘的访问次数(减少磁头的移动速度),加快访问速度。
当然,B+不是只能用于关系数据库,LSM也不是只能用于NoSQL.或许随着SSD存储技术的逐渐成熟,B+树又会变得不一样吧。(现在SSD还是好贵啊,那个网站用得起??)
Javaweb的存储性能(1)
最新推荐文章于 2022-02-20 00:07:49 发布