本文讨论了LSM-Tree中的Compaction机制,解决了SSTable只增不删的问题。Compaction通过合并多个SSTable文件,回收无效数据,提升读性能。文章介绍了不同层级的设计、Compaction的触发条件、文件选择策略及去重逻辑,确保数据的有序性和一致性,并管理版本信息以支持并发读写操作。
本文介绍了RocksDB的基本架构和运作方式,以及性能挑战和解决方法。RocksDB是高性能的KV数据库,适用于海量数据检索和高速存取场景。主要组件包括MemTable、SSTable和预写日志(WAL)日志。数据写入先写入MemTable,再flush到磁盘上的SSTable文件。SSTable文件按层级存放,每层数据被范围分区为多个SSTable文件。RocksDB通过LSM Trees实现追加写入,通过Compaction操作降低放大因子的影响。主要Compaction策略有Size-Tiered Compaction和Leveled Compaction。文章还介绍了WiscKey和PebblesDB等优化LSM树的方法,降低写入放大。
RocksDB是一种嵌入式的Key-Value数据库,用作Flink中的RocksDBStateBackend的底层存储。它通过多层组织持久化数据,并通过异步Compaction合并重复、过期和已删除的数据。在写入过程中,数据会经过序列化后写入到WriteBuffer,再从内存flush到磁盘上。在读取过程中,会先尝试从WriteBuffer和Immutable Memtable中读取数据,如果没有找到,则会查询Block Cache和底层的SST文件。RocksDBKeyedStateBackend增量快照将差异上传到分布式文件系统,并通过SharedStateRegistry进行状态的注册和过期。RocksDB的性能调优方法包括开启性能监控、增量CheckPoint和本地恢复、设置多目录、调整RocksDB选项、增大block缓存、调整write buffer和level阈值、增大write buffer数量和后台线程数、开启分区索引功能。设置Checkpoint时需要考虑时效性和性能之间的平衡。
Leveldb 是一个 LSM-Tree 类型的数据库, LSM 最后一个字母就是 merge, 压实就是 merge 具体实现. 该算法在 LSM-Tree 论文阅读笔记 里有介绍, 如果不了解建议先读下这篇小文. 1. 压实介绍当 level-L
完成下面两步后,将自动完成登录并继续当前操作。