clickhouse的 LSM算法(3)

44 篇文章 183 订阅 ¥9.90 ¥99.00
27 篇文章 0 订阅
本文详细介绍了ClickHouse如何利用LSM算法实现数据预排序,减少磁盘读取。在LSM算法中,数据先写入日志,然后在内存排序,最终按顺序写入磁盘。通过定期合并处理重合数据文件,实现乱序数据的有序存储。尽管ClickHouse通过LSM提高了磁盘利用率,但可能导致查询时的数据分布问题,需要用户自行合并。同时对比了LevelDB的LSM使用方式,强调两者在面对不同场景时的设计差异。
摘要由CSDN通过智能技术生成

前面介绍了clickhouse通过block和lsm来减少磁盘读取的数据量。严谨的逻辑应该时clickhouse通过lsm算法来实现数据预排序,从而减少了磁盘读取的数据量,本章番外主要为读者介绍什么是LSM算法,对LSM算法已经有了解的读者可以跳过本章。

LSM算法最早出现在1991年的ACM期刊上,之后其思想在各大大数据存储系统中被广泛使用,例如LevelDB,HBase,Cassandra……LSM算法由于适应的场景不同,存在很多的变体,clickhouse也使用lsm算来实现其预排序的功能,本文将着重介绍clickhouse中的使用,同时也会适当涉及一些其他系统的使用用以让读者体会架构设计的随心所欲。

我们都知道,用户在调用insert向clickhouse插入数据时,数据不一定是按已经按照排序键排序好的数据,大概率是乱序数据。那么这种乱序的请求如何做到写入磁盘时变得有序呢?这个就是LSM算法实现的。

LSM算法的几个核心步骤:

  • 在于数据写入存储系统前首先记录日志,防止系统崩溃
  • 记录完日志后在内存中以供使用,当内存达到极限后写入磁盘,记录合并次数Level为0(L=0)。已经写入磁盘的文件不可变。
  • 每过一段时间将磁盘上L和L+1的文件合并

我们用一个示例来展示下整个过程

T=0时刻,数据库为空。

T=1时刻,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lg4546

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值