随笔分类 -  leveldb/rocksdb

摘要:本指南的目的是提供你足够的信息用于根据自己的工作负载和系统配置调优RocksDB。 RocksDB非常灵活,这有好也有坏。你可以真多很多工作场景和存储技术进行调优。在Facebook,我们使用相同的代码跑内存工作压力,闪盘设备和机械硬盘。然而,灵活性不总是对用户友好的。我们引入了大量的调优参数,让人 阅读全文
posted @ 2023-02-27 10:23 misaka-mikoto 阅读(1784) 评论(0) 推荐(0) 编辑
摘要:并发 一个数据库可能同时只能被一个进程打开。RocksDB的实现方式是,从操作系统那里申请一个锁,以此来阻止错误的写操作。 在单进程里面,同一个rocksdb::DB对象可以被多个同步线程共享。举个例子,不同的线程可以同时对同一个数据库调用写操作,迭代遍历操作或者Get操作,而且不需要使用额外的同步 阅读全文
posted @ 2023-02-26 16:36 misaka-mikoto 阅读(1100) 评论(0) 推荐(0) 编辑
摘要:问:如果我的进程crash了,我的数据库数据会受影响吗?答:不会,但是如果你没有开启WAL没有刷入到存储介质的memtable数据可能会丢失。问:如果我的机器crash了,RocksDB能保证数据的完整吗?答:数据在你调用一个带sync的写请求的时候会被写入磁盘(使用WriteOptions.syn 阅读全文
posted @ 2023-02-26 11:09 misaka-mikoto 阅读(1036) 评论(0) 推荐(0) 编辑
摘要:常见的 LSM 存储引擎,如 LevelDB 和 RocksDB,将用户写入的一组的 key 和 value 存放在一起,按顺序写入 SST。在 compaction 过程中,引擎将上层的 SST 与下层 SST 合并,产生新的 SST 文件。这一过程中,SST 里面的 key 和 value 都会 阅读全文
posted @ 2023-02-14 15:36 misaka-mikoto 阅读(554) 评论(0) 推荐(0) 编辑
摘要:leveldb/rocksdb采用deque控制多线程只允许一个线程修改memtable, 是由于memtable不存在读-写冲突(采用MVCC,保证Sequence一定不同,memtable的key就一定不同,update/delete/insert操作一定不会修改已有key的数据) 这样只存在写 阅读全文
posted @ 2023-02-13 16:38 misaka-mikoto 阅读(143) 评论(0) 推荐(0) 编辑
摘要:RocksDB Features that are not in LevelDB We stopped maintaining this page since 2016. New features are not added to the lists. Performance Multithread 阅读全文
posted @ 2023-02-13 10:52 misaka-mikoto 阅读(54) 评论(0) 推荐(0) 编辑
摘要:leveldb是典型的LSM树实现,因此需要对内存中的数据进行持久化。一次内存数据的持久化过程,在leveldb中称为Minor Compaction。一次minor compaction的产出是一个0层的sstable文件,其中包含了所有的内存数据。但是若干个0层文件中是可能存在数据overlap 阅读全文
posted @ 2023-02-12 11:05 misaka-mikoto 阅读(125) 评论(0) 推荐(0) 编辑
摘要:MVCC多版本是一个解决并发问题的模型,或者说是一种设计思路。 why MVCC? 如果有一份数据,无论它是存储在内存里还是磁盘上,当我们读取数据时可能有写操作正在修改它。传统思路就是将数据用一把锁保护起来: 读之前加读锁,这样就不会有写操作。 写之前加写锁,这样就不会有读操作和其他写操作。 如果数 阅读全文
posted @ 2023-02-10 22:09 misaka-mikoto 阅读(164) 评论(0) 推荐(0) 编辑
摘要:sstable(sorted string table)是google bigtable中引出的数据结构,在levelDB、RocksDB以及现在各类数据库存储中配合LSM有广泛应用,学习下很有必要,本位以RocksDB中SST的实现来了解SST。 优点 空间利用率高:sstable基于sorted 阅读全文
posted @ 2023-02-08 22:10 misaka-mikoto 阅读(257) 评论(0) 推荐(0) 编辑
摘要:前言 Compaction和Version相关的部分交织在一起,不搞明白Version很难理解Compaction。其实这句话反过来说也是对的,如果不理解Compaction也很难理解VersionSet。 versionEdit Version相关的数据结构有3个,Version VersionE 阅读全文
posted @ 2022-09-26 11:08 misaka-mikoto 阅读(89) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示