空间放大即 size_in_file_system / size_of_user_data LSMTree level大小调整 层数不变的情况下,根据数据总量修改LSMTree每层的大小,原理就是 通过每层的大小控制compaction频率,频率大了自然空间放大小,每个level的之间的倍数越小(待压缩的sst少了),空间放大越小,读放大越小,写放大越大 (level金字塔越扁平压缩...
administrationWebPasswordFile=/path/to/password/file streamExecutionEnvironment.jobGraphStorePort=port streamExecutionEnvironment.jobGraphStoreAddress=ip:port streamExecutionEnvironment.jobGraphStorePasswordFile=/path/to/password/file streamExecutionEnvironment.jobGraphStoreUser=userName streamExecutionEnvironment.jobGraph...
RocksDB的基本组成是 WAL、 memtable、sstfile 。 WAL 是一个顺序写的文件。写请求会先将数据写到 WAL。 memtable是一种内存数据结构,当WAL写入之后,数据会写到memtable中。 sstfile是持久化数据文件,内存表中数据溢出或定期写入sstfile。 如图3.1所示Rocksdb的基础架构。Rocksdb中引入了ColumnFamily(列族, CF)的...
"rocksdbReadBlockCacheMissCount":40341617,"rocksdbSstFileSize":141037747,"rocksdbTotalBytesReadByCompaction":336853375,"rocksdbTotalBytesReadByGet":680000000,"rocksdbTotalBytesReadThroughIterator":0,"rocksdbTotalBytesWrittenByCompaction":141037747,"rocksdbTotalBytesWrittenByPut":740000012,"rocksdbTotalCompaction...
前一段时间,在给用户升级 TiKV 并重启的时候,突然爆出了大量 “Sst file size mismatch” 的错误,也就是硬盘上面的 SST 文件跟实际 MANIFEST 里面的文件大小不一致。通常遇到这个问题,表明 RocksDB 的文件已经有问题了。 因为是大批量的 SST 都报了这样的错误,所以我们首先怀疑跟 disk 有关,看是否是硬件损坏。
rocksdb在和持久化存储(应该是sstfile)间传输数据时(读写操作),rocksdb会将key排序相近的数据组成一个block为单位进行传输,默认block size是4096个未压缩字节。 db的内容存储在sstfiles中,每个sstfile包含多个有序的压缩的blocks. 如果应用的bulk scan操作多的话,调大该值,这样可以使一个block中都是scan需要的值...
1. write_buffer_size = 256 * 1024 * 1024 memtable大小256M,48个实例最多占用256M*48 = 24.6G 2. target_file_size_base = 256 * 1024 * 1024 sst大小256M,这样可以减少sst文件数,从而减少fd个数 3. max_bytes_for_level_base = 512 * 1024 * 1024 ...
SST 文件格式 Footer:程序启动位置,存储 IndexBlock 和 MetaIndexBlock 的位置 IndexBlock:存储 DataBlock 的位置 MetaIndexBlock:存储了过滤元数据、属性信息、压缩字典索引的位置 DataBlock:存储有序的数据记录 引用论文:Cho M, Choi W, Park S H. A Study on WAF reduction and SST file size on RocksDB[C...
当多个level的SST文件总size都达到了阈值,那应该优先对哪个level做compact 对于一个level内的多个SST文件,应该优先选择哪个文件做compact 挑选哪个level 为了确定不同level做compact的优先级,rocksdb给每个level赋予一个score,得分越高的level,其做compact的优先级更高。每层的score计算方式如下: ...
max_background_compactions:底层sst向高层sst compact的并发线程数。并发compaction会加快compaction的速度,如果compaction过慢,达到soft_pending_compaction_bytes_limit会发生阻塞,达到hard_pending_compaction_bytes会停写。 max_write_buffer_number:指定memtable和immutable memtable总数。当写入速度过快...