首页 > 其他分享 >LSMT(Log-Structured Merge-Tree)

LSMT(Log-Structured Merge-Tree)

时间:2023-03-29 16:45:15浏览次数:55  
标签:存储 LSM LSMT Structured 写入 Merge 内存 磁盘

LSM简介Log Structured Merge Tree,下面简称 LSM。2006年,Google 发表了 BigTable 的论文。这篇论文提到 BigTable 单机上所使用的数据结构就是 LSM。目前,LSM 被很多存储产品作为存储结构,比如 Apache HBase, Apache Cassandra, MongoDB 的 Wired Tiger 存储引擎, LevelDB 存储引擎, RocksDB 存储引擎等。简单地说,LSM 的设计目标是提供比传统的 B+ 树更好的写性能。LSM 通过将磁盘的随机写转化为顺序写来提高写性能 ,而付出的代价就是牺牲部分读性能、写放大(B+树同样有写放大的问题)。LSM 相比 B+ 树能提高写性能的本质原因是:外存,其随机读写都要慢于顺序读写,无论磁盘还是 SSD。

  1. 追加写日志,顺序写提高写入效率。
  2. 构建SSTables(sorted string tables)。
    1. 写入时,首先写入Memtable内存表(排序结构,保存键和磁盘偏移位置)。当内存表大于某个阈值,作为SSTables写入磁盘。防止数据库崩溃,导致写入内存表,但还未写入磁盘的数据丢失,可以进行wal,类似于redo log。
    2. 读取时,首先在内存表中查找键,然后是最新的磁盘段文件,接下来是次新的磁盘段文件,直到找到目标(或为空)。防止查找数据库中某个不存在的键很慢,引入布隆过滤器。对于数据库中不存在的某个键,会很快告诉你结果。
  3. 压缩SSTables
    1. 后台进程周期性地合并与压缩磁盘段。这个阶段可以用旧段继续正常读取、写入,合并完成后切换新段。
0  

标签:存储,LSM,LSMT,Structured,写入,Merge,内存,磁盘
From: https://www.cnblogs.com/zhengbiyu/p/17269485.html

相关文章

  • stata:合并merge时如何处理关键变量外的同名变量的值分三种情况
    useceshi1,clearlist////+------------------------------------------------------+//|idks2019ks2020ks2021ks2022ks2023ab|//......
  • Sublime Merge
    SublimeMerge目录初始应用目录Git-暂存列表(stashes)常用命令存储当前的修改,但不提交commit存储当前的修改,但不提交commit,并指定标识信息查看stash内容回到某个stash的状......
  • git 冲突: Please, commit your changes or stash them before you can merge. git sta
    场景:其实这种冲突是甲乙两个人或多人进行开发同一个组件,但是某个人提前提交了代码,当另一个人进行提交代码的时候去gitpull的时候,就会报如下。主题上述描述的场景,俩人开发同......
  • Linux开机提示“welcome to emergency mode! ”进入救援模式解决办法
    一、centos开机启动进入救援模式:welcometoemergencymode! 根据系统提示:journalctl-xb查看系统报错、journalctl-p4查看报错级别为4警报没有找到相关文件,检查开......
  • [GIT] 如何处理GIT分支合并(GIT MERGE)
    1概述2分支合并如果你有两个分支main和dev,main存放稳定版本,dev是开发版本,一个阶段后,你需要把dev代码更新到main分支中。dev--(mergeupdatecontentto)-->main......
  • Vue——mergeOptions【四】
    前言前面我们简单的了解了vue初始化时的一些大概的流程,这里我们详细的了解下具体的内容;这块建议搭建可以根据demo进行debugger来观察;内容这一块主要围绕init.ts......
  • mysql merge update_SQL中批量更新 merge into用法
     从备份表中更新字段到正式表中,使用UPDATE批量更新大量的数据,会出现效率低下,有时候甚至卡死的情况,后面通过使用MERGEINTO代替UPDATE执行批量更新,会提升执行效率。......
  • Git rebase 与 merge
    合并分支在开发过程中,会有许许多多的分支,但每一个仓库都有一个核心分支——main分支,用于发布稳定版本的分支。其余的分支开发完成一个功能或修复一个BUG之后都是要与......
  • SQL Server中的merge into语句
    mergeinto语句是用来合并两张表的数据的,比如我们想把一张表的数据批量更新到另外一张表,就可以用mergeinto语句。具体有哪些业务场景呢?1.数据同步2.数据转换3.基于......
  • Tf2 ValueError: A merge layer should be called on a list of inputs
    Tf2ValueError:Amergelayershouldbecalledonalistofinputs问题描述最近遇到了一个tensorflow的问题,在load已经save下来的模型的时候,发生了报错:/opt/conda/l......