《数据库系统内 幕》日志结构存储

news/2024/11/8 3:00:59/

日志结构存储

  • LSM树
    • LSM思想
    • LSM操作
      • 插入
      • 删除

专栏
《数据库系统内 幕》存储引擎
《数据库系统内 幕》事务恢复与处理
《数据库系统内 幕》日志结构存储
《数据库系统内 幕》B树的变体
《数据库系统内 幕》分布式系统

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 提供了一些机制回收这些空间。


http://www.ppmy.cn/news/543752.html

相关文章

【数据库专题】DML终极奥义——《狗叫江湖》“第五幕”

👏作者简介:东星耀杨,C站煮播之星,【无规则教学】创始人,曾奉太上老君之名下凡,为了给迷途中的兄弟萌指点迷津,帮助兄弟萌早日踏入如我这般境界!世人见我,皆称之“王霸之…

如何在premiere 中 裁切异形幕4K视频?

如何在premiere 中 裁切4K视频? 现实困境:L幕,墙幕和地幕是两个电脑投影投射的,所以需要分开输出的,成片是:3760x2690的分辨率;那么问题来了,H264支持4K格式,但是&#…

vue3第五幕之【工程结构】分析篇(vue2 vm VS vue3 app)

vue3 工程结构分析 vm vs app 前言主要内容1 工程结构分析1.1 图示1.2 叙述 2 vue3工程结构2.1 app与vm2.2 App.vue2.3 语法检查 summary下期预告vue3第六幕之组合式API篇(初识setup()) 前言 这篇文章的相关知识在vue3第一幕基础与起步中有过提及,本文相…

入眠时分闭上眼睛的时候眼睑闭上的那一瞬间今天的一切落下帷幕 下了绵绵的细雨洋洋洒洒,飘忽不定微风吹过凉意融融天空似乎蒙上了细细的幕幕如淡墨,染尘轻盈 路人匆匆而过亦步亦趋之间,我自默然人心入幕,幕似围城冰释不在&#xf…

ue4 unreal NDisplay插件 简易使用 三折幕 详细...

仅支持4.27版本 NDisplay文档 https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/IntegratingMedia/nDisplay/Overview/ Switchboard文档 https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/CommunicatingWithMediaComponents/Switchboard/ 1.打开任意项…

LGSS-一种多模态电影幕分割方法

1.简介 该方法发布于IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2020,由 港中文商汤联合实验室与香港中文大学深圳合作发作 GitHub地址:https://github.com/AnyiRao/SceneSeg 网站地址:https://anyirao.com/projec…

CC2531 USB Dongle安装失败问题

1、CC2530 Development Kit的开发板套件,在套件里,有个CC2531 USB Dongle,将这个USB Dongle插到电脑上的时候,提示无法识别,参照相关文档看的时候,把需要安装的相关驱动和Packet Sniffer都安装完成了W10 64…

ZigBee Z-Stack 8.05 CC2530与CC2531的区别

【源码、文档、软件、硬件、技术交流、技术支持,入口见文末】 由于经常有朋友问到: 1、CC2530与CC2531的区别? 2、CC2530与CC2531的程序可以互相通用吗? 其实只要用过TI的Z-Stack协议栈的开发者,应该都知道&#xff…