DB·洞见#2回顾 | 基于LSM-Tree存储的数据库性能改进
腾讯云数据库
共 12034字,需浏览 25分钟
·
2022-01-08 00:31
LSM-Tree(Log Structured Merge Tree)是数据库领域内较高效的key-value存储结构,被广泛应用于工业界数据库系统,如经典的单机kv数据库LevelDB、RocksDB,以及被诸多分布式NewSQL作为底层存储引擎。
本期将由腾讯云数据库高级工程师韩硕来为大家分享基于LSM-Tree存储的数据库性能改进,重点介绍近年来学术界对LSM-Tree的性能改进工作,并探讨这些改进措施在工业界数据库产品中的应用情况以及落地的可能性。以下是分享实录:
LSM-Tree基本结构
点查:先查MemTable,再从SST中的Level0、Level1…...一层层向下探查,找到数据就返回。由于上层数据必定比下层数据的版本新,因此返回的都是最新数据。 范围查询:每一层都会找到一个匹配数据项的范围,再将该范围进行多路归并,归并过程中同一key只会保留最新版本。
Tiering compaction:较少做compaction操作,有序性较弱,每一层允许有多个sorted run。 Leveling compaction:更频繁的compaction操作,尽可能增强有序性,限制每一层最多只有1个sorted run(L0层除外)。
Compaction
优化策略与分析
读穿透,即查询数据不存在。 假设知道每次发生假阳性的概率,如果判定结果为假阳性,则需要读一次磁盘。
Tiering compaction的写放大低,compaction频率低,其缺陷为空间放大高、查询效率低,更利于update频繁的workload;Leveling compaction的写放大高,compaction操作更频繁,但空间放大低,查询效率高。 尽管Tiering compaction和Leveling compaction的空间放大不同,但导致空间放大的主要原因相同,即受最下层的过期版本数据影响。 越往下的层,做一次compaction的I/O代价越高,但发生的频率也更低,不同层之间做compaction的期望代价大致相同。 点查、空间放大、长范围查询的性能瓶颈在LST-tree的最下层,而更新操作则更加均匀地分布在每一层。因此,减少非最后一层的compaction频率可以有效降低更新操作的代价,且对点查、空间放大、长范围查询的性能影响较小。
降低写放大
降低读放大
降低空间放大
结语
﹀
﹀
﹀
腾讯云数据库2021年成绩单,请检阅!
硬核干货 | 揭秘TDSQL新敏态引擎Online DDL技术原理
硬核干货 | 轻松驾驭EB级千万QPS集群,TDSQL元数据管控与集群调度的演进之路
↓↓点击阅读原文,了解更多优惠
评论