
Rocksdb
文章平均质量分 91
作为较为优秀的存储引擎底座,在此记录工作过程中遇到的问题
z_stand
远离颠倒梦想,究竟涅槃
展开
-
两阶段提交(2 Phase Commit) 在 PostgreSQL 和 RocksDB 中的实现
住院期间的一些学习思考... 探索PostgreSQL 以及 RocksDB 的 2PC实现原创 2023-03-05 15:02:53 · 3117 阅读 · 0 评论 -
关于如何提升 Append-Only 存储引擎 写性能的一些思考
append-only 存储引擎: leveldb/rocksdb/wiredtiger 写链路优化原创 2022-05-01 11:35:20 · 2663 阅读 · 0 评论 -
Rocksdb的事务(二):完整事务体系的 详细实现
rocksdb 基本隔离级别实现 以及 并发场景的冲突解决方案。原创 2021-12-28 01:58:57 · 4353 阅读 · 3 评论 -
关于 fallocate 文件系统预分配 的一些细粒度测试
文件系统预分配:提升写入性能的同时降低 因为磁盘空间不足而写入异常的风险,适用于 WAL/UNDO 这样的场景原创 2021-11-30 00:11:09 · 3157 阅读 · 0 评论 -
Rocksdb 的内存分配器--ConcurrentArena 实现原理
rocksdb 的concurrent arena 以及 其和底层的tcmalloc/jemalloc的差异原创 2021-11-27 12:46:41 · 1929 阅读 · 0 评论 -
关于 Rocksdb 的 EnvWrapper 作用的小讨论
有了Env 这个抽象类,为什么多出来一个 EnvWrapper 这个原封不动重写Env 方法 的Env 子类?原创 2021-10-27 22:14:24 · 1102 阅读 · 2 评论 -
ZNS : 解决传统SSD问题的高性能存储栈设计(fs-->io-->device)
围绕:ZNS: Avoiding the Block Interface Tax for Flash-based SSDs 论文展开ZNS ssd内部的实现原理原创 2021-10-24 13:54:20 · 14289 阅读 · 7 评论 -
跟着Rocskdb 学 存储引擎:读写链路的代码极致优化
1. FileIndexer.2. PinableSlice & Cleanable3. 工业级 LRU Cache & Clock Cache4. ThreadLocalPtr & Version 系统5. JoinBatchGroup6. CoreLocalArray & Statistics原创 2021-09-22 23:59:34 · 2832 阅读 · 3 评论 -
关于 linux io_uring 性能测试 及其 实现原理的一些探索
从 io_uring on fio / rocksdb的一些测试记录 来体会io_uring的性能优势,从 io_uring 非poll 模式 以及 poll 模式的实现来看其性能优势以及发展前景。原创 2021-09-11 11:53:25 · 3801 阅读 · 4 评论 -
Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter
xor-filter 基本原理 以及 更高效的ribbon-filter 高斯消元的大体过程原创 2021-09-04 13:31:16 · 2394 阅读 · 1 评论 -
Rocksdb 的 MergeOperator 简单使用记录
Rocksdb MergeOperator 简单使用记录原创 2021-08-14 17:22:57 · 2055 阅读 · 8 评论 -
关于LSM-tree 的 Remote Compaction调度
rocksdb 2021 meetup 中 remote compaction 在 rocksdb-cloud中的应用原创 2021-08-14 16:21:36 · 1418 阅读 · 1 评论 -
存储引擎 K/V 分离下的index回写问题
Titan, rocksdb的BlobDB, BadgerDB 在k/v 分离下如何降低GC 引入 的回填index 对性能的影响。原创 2021-07-30 18:03:47 · 1345 阅读 · 10 评论 -
Mac 从Makefile 编译 Rocksdb 源码的一些注意事项
记录在Mac 上通过Makefile 编译Rocksdb 源码过程中应注意的一些事项原创 2021-07-23 15:25:43 · 1655 阅读 · 0 评论 -
单机 “5千万以上“ 工业级 LRU cache 实现
Rocksdb 单机 五千万 qps 工业级 LRU-Cache的实现设计原创 2021-07-18 17:40:30 · 2716 阅读 · 2 评论 -
MyRocks: 为facebool 的社交图谱服务的LSM-tree存储引擎
原来 LSM-tree 存储引擎 可以很强原创 2021-06-27 19:31:33 · 1176 阅读 · 2 评论 -
Rocksdb iterator 的 Forward-scan 和 Reverse-scan 的性能差异
前言最近在读 MyRocks 存储引擎2020年的论文,因为这个存储引擎是在Rocksdb之上进行封装的,并且作为Facebook 内部MySQL的底层引擎,用来解决Innodb的空间利用率低下 和 压缩效率低下的问题。而且MyRocks 在接入他们UDB 之后成功达成了他们的目标:将以万为单位的服务器集群server个数缩减了一半。MyRocks 在facebook内部的成功实践证明了LSM-tree的存储引擎经过一系列优化之后能够达到和B±tree存储引擎性能接近且节约大量存储成本的目的。对于我们底原创 2021-06-19 15:40:13 · 1981 阅读 · 1 评论 -
手把手教你 用C++实现一个 可持久化 的http_server
一个 支持持久化的httpserver 实现原创 2021-06-15 13:59:48 · 1520 阅读 · 0 评论 -
Rocksdb 的 BlobDB key-value 分离存储插件
rocksdb社区推出的key-value分离存储组件,无需额外接口,一个参数开启关闭key/value分离。原创 2021-06-06 13:49:51 · 4098 阅读 · 25 评论 -
Rocksdb 通过posix_advise 让内核减少在page_cache的预读
rocksdb advise_random_on_open 通过 posix_fadvise 关闭操作系统page_cache_sync_read 预读逻辑原创 2021-04-29 12:34:35 · 1398 阅读 · 2 评论 -
Rocksdb 通过ingestfile 来支持高效的离线数据导入
ingest file方式导入数据,减少系统cpu/io/memory 资源开销原创 2021-04-17 18:41:35 · 3863 阅读 · 17 评论 -
从JoinBatchGroup 代码细节 来看Rocksdb的相比于leveldb的写入优势
真是精心雕琢的引擎啊原创 2021-04-10 00:36:11 · 2009 阅读 · 17 评论 -
Rocksdb 利用recycle_log_file_num 重用wal-log文件
减少操作系统文件inode/dentry 相关cache的更新原创 2021-04-01 23:01:36 · 911 阅读 · 0 评论 -
Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
C++多态 + 工厂模式的灵活应用,极简的抽象来增强引擎的可扩展性原创 2021-03-30 22:58:00 · 2403 阅读 · 2 评论 -
Rocksdb Slice使用中的一个小坑
坑原创 2021-03-25 23:53:33 · 1514 阅读 · 2 评论 -
Rocksdb 获取当前db内部的有效key个数 (估值)
又一个简单问题。从获取有效key来看rocksdb的写入逻辑原创 2021-03-20 00:30:47 · 2809 阅读 · 0 评论 -
Rocksdb 写入数据后 GetApproximateSizes 获取的大小竟然为0?
一个简单的问题原创 2021-03-12 23:26:37 · 749 阅读 · 0 评论 -
Rocksdb 日志分析工具 -- 性能和稳定性分析
Rocksdb 日志分析工具 : 分析LOG日志中出现的性能和稳定性问题,并给出优化建议。手把手教你发布自己的python package,为全球开发者使用。原创 2021-03-05 14:12:36 · 2186 阅读 · 1 评论 -
Rocksdb 的优秀代码(三)-- 工业级 线程池实现分享
Rocksdb compaction/flush 线程池实现分享,且个人已实现该线程池基本功能,欢迎试用。原创 2021-02-27 00:09:57 · 2547 阅读 · 0 评论 -
Rocksdb auto tune -- compaction的自动调优策略
从rate limter 到 auto tune 以及 auto tuned compaction的优化实战,主要为了解决write-stall导致的读长尾以及写吞吐降低问题。原创 2021-01-22 22:51:59 · 2041 阅读 · 0 评论 -
Rocksdb 的优秀代码(二)-- 工业级 打点系统 实现分享
Rocksdb 请求耗时统计,请求计数统计 的优雅实现原创 2021-01-22 16:18:15 · 1443 阅读 · 1 评论 -
关于cpu 分支预测 以及 cpu pipeline 的一些思考
本文能够回答如下问题:- 分支预测 __builtin_expect 或者 LIKELY/UNLIKELY 原理是什么?- cpu pipeline架构是如何演进的?- CPU分支预测是如何体现在 pipeline 执行指令 的过程中的?- 对CPU友好的分支预测 能够有多少的性能提升?原创 2021-01-19 01:15:21 · 3071 阅读 · 0 评论 -
从 Level0直接将sst文件写入到LevelN 现象 来看rocksdb对compaction的优化
通过level_compaction_dynamic_level_bytes=true 配置 来对rocksdb compaction 逻辑的优化。现象就是L0的sst文件经过compaction直接写入到了Ln层。原创 2021-01-15 12:44:36 · 1808 阅读 · 1 评论 -
Rocksdb Iterator实现:从DBIter 到 TwoLevelIter 的漫长链路
rocksdb 迭代器如何完成构造并参与scan 过程,其基本架构介绍,DBIter, InternalIter, MergingIterator, MemtableIter, 以及LevelIterator和TwoLevelIterator 实现机制。原创 2020-12-26 14:06:49 · 3445 阅读 · 3 评论 -
Rocksdb 的优秀代码(一) -- 工业级分桶算法实现分位数p50,p99,p9999
我们知道一个完整的监控系统必须存在p99/p999等分位数指标,作为系统可用性的评判标准之一。而像开源监控系统中做的很不错的`grafana`和`prometheus `一定需要工业级的分位数算法。所谓**分位数**(quantile),比如p99,表示percent of 99,即99% 的数据小于当前p99的指标。使用分位数来统计系统的长尾延时,也是系统可用性的一种衡量指标。原创 2020-12-07 00:08:51 · 2207 阅读 · 0 评论 -
Rocksdb 的一些参数调优策略
通过本文,能够清楚 rocksdb的读写性能调优,compaction的核心调优,以及一些通用的优化配置。原创 2020-12-05 17:14:51 · 7533 阅读 · 1 评论 -
LSM 优化系列(四) -- Rocksdb和Lethe 对Delete问题的优化
LSM/Rocksdb 引擎在批量 delete之后 会引入读放大,空间放大,写放大等问题,针对该问题的业界方案做一个代码层级的验证。从rocksdb 到 SIGMOD'20 的 Lethe,欢迎大家讨论。原创 2020-11-28 14:15:18 · 4022 阅读 · 6 评论 -
LSM 优化系列(三)-- 【ATC‘19】9SILK- Preventing Latency Spikes in Log-Structured Merge Key-Value Stores
学无止境,不过还好有高手指路,能够发现如此精彩的存储世界,叹之有幸!!!LSM 的作为新生代存储引擎的基础架构,优异的写吞吐,天然支持的冷热分离架构下提供足量的读的优化。有得必有失,Compaction的 数据回收和 merge sort带来的I/O 调度 挑战让后来者想要不断去征服这座性能高峰,为引擎界引入足以和B树相媲美的经典架构。原创 2020-11-14 00:53:07 · 2459 阅读 · 0 评论 -
如何对 Rocksdb以及类似存储引擎社区 提出 有效的性能问题?
有效的性能问题 既能节约自己与他人的沟通时间,又能展示自己对系统理解的深度和广度。品牌的建立是一辈子的事情,也是十分钟的事情。原创 2020-11-10 21:52:58 · 788 阅读 · 0 评论 -
Rocksdb 的 rate_limiter实现 -- compaction限速
LSM 引擎针 的业界相关优化方案已经有很多了,优化的方向也是在不同workload纬度上进行取舍。比如头条的Amap ,中科的dCompaction 是为了降低Compaction的写放大(写放大除了消耗ss)原创 2020-11-10 00:43:50 · 3101 阅读 · 2 评论