当前位置:网站首页>《数据库系统内 幕》日志结构存储
《数据库系统内 幕》日志结构存储
2022-07-19 03:07:00 【_苏沐】
LSM树
LSM树由两个或以上的存储结构组成。一个存储结构常驻内存中,称为C0 tree,具体可以是任何方便健值查找的数据结构,比如红黑树、map之类。另外一个存储结构常驻在硬盘中,称为C1 tree,具体结构类似B树。C1所有节点都是100%满的,节点的大小为磁盘块大小。
LSM思想
LSM树(Log Structured Merge Tree,结构化合并树)的思想非常朴素,就是将对数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘(由此提升了写性能),是一种基于硬盘的数据结构,与B-tree相比,能显著地减少硬盘磁盘臂的开销。当然凡事有利有弊,LSM树和B+树相比,LSM树牺牲了部分读性能,用来大幅提高写性能。
读取时需要合并磁盘中的历史数据和内存中最近的修改操作,读取时可能需要先看是否命中内存,否则需要访问较多的磁盘文件(存储在磁盘中的是许多小批量数据,由此降低了部分读性能。但是磁盘中会定期做merge操作,合并成一棵大树,以优化读性能)。LSM树的优势在于有效地规避了磁盘随机写入问题,但读取时可能需要访问较多的磁盘文件。
LSM操作
插入
LSM树 插入数据可以看作是一个N阶合并树。数据写操作(包括插入、修改、删除也是写)都在内存中进行,数据首先会插入内存中的树。当内存树的数据量超过设定阈值后,会进行合并操作。合并操作会从左至右便利内存中树的子节点 与 磁盘中树的子节点并进行合并,会用最新更新的数据覆盖旧的数据(或者记录为不同版本)。当被合并合并数据量达到磁盘的存储页大小时。会将合并后的数据持久化到磁盘,同时更新父节点对子节点的指针。
读
LSM树 读数据 磁盘中书的非子节点数据也被缓存到内存中。在需要进行读操作时,总是从内存中的排序树开始搜索,如果没有找到,就从磁盘上的排序树顺序查找。
在LSM树上进行一次数据更新不需要磁盘访问,在内存即可完成,速度远快于B+树。当数据访问以写操作为主,而读操作则集中在最近写入的数据上时,使用LSM树可以极大程度地减少磁盘的访问次数,加快访问速度。
删除
LSM树 删除数据 前面讲了。LSM树所有操作都是在内存中进行的,那么删除并不是物理删除。而是一个逻辑删除,会在被删除的数据上打上一个标签(墓碑),当内存中的数据达到阈值的时候,会与内存中的其他数据一起顺序写入磁盘。 这种操作会占用一定空间,但是LSM-Tree 提供了一些机制回收这些空间。
边栏推荐
- SQL optimization process that doubles many times at a time
- 接口测试到底怎么做,看完这篇文章彻底搞清楚
- Metaverse:元宇宙中DeFi的可能性和局限性
- Detailed WC find xargs zip gzip bzip2 XZ tar SFTP command or protocol
- LeetCode 0119. Yang Hui triangle II - spatial optimization based on in situ rolling
- Redis deletion strategy and elimination strategy
- Mapbox GL JS主动刷新地图的方法
- [haoi2012] volume adjustment (up to backpack)
- LeetCode 0119. 杨辉三角 II - 基于原地滚动的空间优化
- Multithreaded quick processing list collection (combined with the use of thread pool)
猜你喜欢
Hcip day 3
【组合逻辑电路】——编码器
How to carry out engineering implementation of DDD Domain Driven Design
SQL optimization process that doubles many times at a time
Leetcode50. Pow(x, n)
Leetcode50. Pow(x, n)
数据库压力测试方法概述
Memory forensics WP of 2022 network security national game
Video 24 alexnet
天气预报仪触摸芯片-DLT8SA15A-杰力科创
随机推荐
01. Valid parentheses
回归分析模型
Silicon Valley class lesson 10 - marketing module and official account menu management
Oracle嵌套多层,找不到表的别名问题
D. Permutation Restoration(贪心 + 双指针)
Jedis
Leetcode53. 最大子數組和
shell练习题
淘宝直播怎么做,主播怎么做才能引流,卖出产品
Naomi: non autoregressive multiresolutionsequence imputation (non autoregressive multiresolution sequence filling) paper details
接口测试到底怎么做,看完这篇文章彻底搞清楚
bye! Damn nullpointexception
Fundamentals of C language: structure (elementary level)
2022年网络安全国赛内存取证WP
LeetCode 0119. 杨辉三角 II - 基于原地滚动的空间优化
Metaverse:元宇宙中DeFi的可能性和局限性
Enterprise digital transformation: three key points!
D. Rating Compression(思维 + 双指针)
Memory forensics WP of 2022 network security national game
硅谷课堂-公众号云点播 硅谷课堂微服务项目实战笔记