企鹅代表什么生肖| 孕妇羊水少吃什么补的快| 嘴里有粘液是什么原因| 观音菩萨姓什么| gap什么意思| 口干口臭是什么原因引起的| 什么样的柳条| 黄瓜什么时候种| 指甲凹陷是什么原因引起的| 肿瘤是什么样子的| 炙什么意思| v1是什么意思| gy是什么颜色| 下眼睑肿胀是什么原因| 什么是单克隆抗体| 环孢素是什么药| 什么是热伤风| 海笋是什么东西| 巴基斯坦是什么语言| 腹黑男是什么意思| 谷氨酰转移酶高是什么病| 猫什么时候打疫苗| 溶豆是什么| 鼻子出血是什么原因| ppm是什么| 容易水肿是什么原因| 喉咙痛头痛吃什么药| ivy什么意思| 三丧日是什么意思| 养尊处优什么意思| 吃什么可以拉肚子| 血气方刚什么意思| 眼压是什么意思| 梭织是什么意思| 右派是什么意思| 黄金五行属什么| 521代表什么含义| 什么叫内分泌失调是什么意思| 滢字五行属什么| 什么叫原发性高血压| 高烧不退是什么病毒| 肿瘤最怕什么| 一个口一个且念什么| 看肝挂什么科| 什么粥养胃| 请丧假需要什么证明| 甲鱼和什么食物相克| 左心室高电压是什么意思| 元辰是什么意思| 天高云淡是什么季节| 东南大学什么专业最牛| 硅橡胶是什么材料| 海星吃什么食物| 细菌属于什么生物| 磁共振是检查什么| louis是什么意思| 什么是m属性| 什么茶降尿酸| dna由什么组成| 梦见雪地是什么征兆| 然五行属性是什么| 手脚发热吃什么药| 乳头内陷是什么原因| 口腔溃疡缺少什么维生素| 口腔义齿是什么| 什么手机信号最好最强| 抓阄什么意思| 特异性是什么意思| 小孩子手脱皮是什么原因引起的| 沙僧是什么动物| 爱恨情仇是什么意思| 山楂泡水喝有什么好处| 什么叫银屑病| 放生乌龟有什么寓意| 夏季喝什么茶好| 晚上两点是什么时辰| 什么的天空填合适的词| 开救护车需要什么驾照| 脓毒血症是什么原因引起的| 26岁属什么生肖| 夵是什么意思| 性侵是什么意思| 8月23是什么星座的| 姜对头发有什么作用| 睡觉起来嘴巴苦是什么原因| 尿臭是什么病| 四级警长是什么级别| 孢子是什么| 狐臭是什么原因| 肝低回声结节是什么意思| 1985年属牛是什么命| 为什么会长痱子| 医生为什么穿白大褂| 什么花晚上开| 文字属于五行属什么| 大脑供血不足是什么原因引起的| 小孩吐奶是什么原因| 蜈蚣是什么生肖| 什么肉好消化| 喜欢蓝色的女人是什么性格| 舒化奶是什么意思| 男士圆脸适合什么发型| 什么水果减肥| 造影是什么手术| 3岁小孩说话结巴是什么原因| 2018年属什么生肖| 宫颈病变是什么意思| 太阳代表什么数字| 糖精对人体有什么危害| 胃囊肿是什么病严重吗| dears是什么意思| 总是想睡觉是什么原因| 耳根疼是什么原因| 什么病不能吃西兰花| 18kgp是什么材质| 早起嘴苦是什么原因| 产品标准号是什么| 什么行什么什么| 大鱼际发青是什么原因| 百合吃了有什么好处| 第一次为什么进不去| 龟头炎用什么软膏最好| 0n是什么意思| 尿检白细胞弱阳性是什么意思| 脾囊肿是什么原因引起的| 梯子是什么| 肺炎支原体抗体阴性是什么意思| 病毒性扁桃体炎吃什么药| 什么程度才需要做胃镜| 66.66红包代表什么意思| 大姨妈很多血块是什么原因| 1969年属什么生肖| pwp是什么意思| 2021年五行属什么| 渗液是什么意思| 为什么医生很少开阿斯美| 尿素氮偏低是什么意思| 肾阳不足吃什么中成药| 穿匡威的都是什么人| 白色念珠菌是什么病| 喝桑叶茶有什么好处| 苓是什么意思| 喉咙痛上火吃什么药效果最好| 坐南朝北是什么意思| 有点尿就想尿什么原因导致的| 沈殿霞为什么地位高| 寒门什么意思| 木行念什么| 如果怀孕了会有什么预兆| 字帖是什么| 驿站是什么意思| 球虫病有什么症状| 生物工程专业学什么| 酵素什么牌子好| 宇宙之外是什么| 洗牙后要注意什么| 高傲什么意思| 消防队属于什么编制| 反胃吃什么药| 吉祥什么意思| 血压低有什么危险| 甲抗是什么原因引起的| 尿毒症的尿是什么颜色| 大天真香是什么意思| 蜜蜡什么样的成色最好| girls是什么意思| 西安有什么美食| 布衣蔬食是什么意思| 九个月的宝宝吃什么辅食食谱| 转铁蛋白阳性什么意思| 觉是什么结构| 梦见红枣树上结满红枣代表什么| ia是什么意思| 女命正印代表什么| 潜血阴性是什么意思| 一代明君功千秋是什么生肖| 达克宁栓治疗什么妇科病| 智商高的人有什么特征| 正连级是什么军衔| 降压药的原理是什么| 318号是什么星座| 第一胎打掉会有什么影响| ts什么意思网络上| 什么是好人| 江西有什么特产| 猫条是什么| 给男人补身体煲什么汤| g6pd是检查什么的| 什么姓氏排第一| 发蒙是什么意思| 肠易激综合症用什么药能治好| 牙齿经常出血是什么原因| daks是什么品牌| 脚气真菌最怕什么| 脚底发热是什么原因| 紫绀是什么症状| 葫芦什么时候成熟| 生吃黄瓜有什么好处| 行驶证和驾驶证有什么区别| 肝硬化挂什么科| 陈惠敏和陈慧琳什么关系| 细菌属于什么生物| 乙肝表面抗原是什么意思| 打火机里的液体是什么| 十一月十七日是什么星座| 长期口臭吃什么药| 十月份什么星座| 干戈是什么意思| tnt什么意思| 白细胞高一点点是什么原因| 麻鸭是什么鸭| 寄居蟹喜欢吃什么| 梦见捡钱了是什么预兆| 血红蛋白偏低什么意思| 嗓子有异物感堵得慌吃什么药| 巨人观什么意思| 备孕为什么要吃叶酸| 五台山在什么地方| 胆囊炎吃什么药效果最好| 氩弧焊对身体有什么危害| 签退是什么意思| 身上经常痒是什么原因| 做b超能查出什么| 麦芽糖是什么糖| 什么季节补钙效果最好| 张嘴睡觉有什么危害| 大便成细条状是什么病| 手淫过度会导致什么| 朦胧什么意思| 兰陵为什么改名枣庄| 七月一是什么星座| 搞基什么意思| 奔走相告是什么意思| 小马拉大车什么意思| 黑色鸟是什么鸟| 摇篮是什么意思| 讨好的笑是什么笑| 耳朵堵塞感是什么原因| 推杯换盏什么意思| 高血压会引起什么并发症| 闺蜜是什么| 打喷嚏漏尿是什么原因| 什么是行政拘留| 阿尔卑斯是什么意思| 冠冕是什么意思| 空腹血糖受损是什么意思| 嘴唇上长疱疹用什么药| 右佐匹克隆是什么药| 5月27日什么星座| 米加参念什么| 膝盖有积液是什么症状| 今天什么日| 有毒是什么意思| 关节退行性变是什么意思| 肝不好吃什么药最好| 睡觉睁眼睛是什么原因| 手术前吃什么补充营养| 助听器什么牌子的好| 倒斗是什么意思| 梦到喝酒是什么意思| 抗hp治疗是什么意思| 胃疼是什么病| 肝占位病变是什么意思| 高密度脂蛋白是什么| 百度
"); //-->

博客专栏

EEPW首页 > 博客 > RocksDB 二级缓存

你好,我在洗澡的时候被人偷窥我看到他的...

发布人:天翼云开发者 时间:2025-08-04 来源:工程师 发布文章
百度 租房不能安居已经成为一个突出的社会痛点。

本文分享自天翼云开发者社区《RocksDB 二级缓存》,作者:b****n

RocksDB 团队正在实现对非易失性介质上的块缓存的支持。可以看作是 RocksDB 当前的易失性块缓存的扩展。非易失性块缓存充当第二层缓存,其中包含从易失性缓存中逐出的块。当这些块由于访问而变得更热时,它们会被提升到易失性缓存中。

此功能适用于数据库位于远程存储或云存储上的情况。非易失性缓存在 RocksDB 中被称为 SecondaryCache。通过维护比 DRAM 大一个数量级的二级缓存,需要从远程存储读取的次数会更少,从而减少读取延迟和网络带宽消耗。

从用户的角度来看,本地闪存缓存将支持以下需求:

1.打开数据库时提供指向二级缓存的指针。

2.能够在同一进程中跨DB共享二级缓存。

3.一台主机上有多个二级缓存。

4.通过确保缓存键的可重复性,支持跨进程重启和重启持久化缓存。

设计

在为 SecondaryCache 设计 API 时,我们可以选择使其对 RocksDB 代码可见或将其隐藏在 RocksDB 块缓存后面。将它隐藏在块缓存后面有几个优点:

1.允许灵活地将块插入二级缓存。块可以在从 RAM 层逐出时插入,也可以立即插入。

2.无论是否配置了二级缓存,它通过提供统一的接口来降低 RocksDB 代码的其余部分的复杂性。

3.使并行读取、在缓存中查看预取、故障处理等更容易。

4.如果需要,可以更轻松地扩展为压缩数据,并允许将其他持久性媒体添加为附加层。

我们决定通过将二级缓存隐藏在block cache后面,使二级缓存对其余 RocksDB 代码透明。我们需要解决的一个关键问题是缓存项的内存分配和所有权,插入二级缓存可能需要由其分配内存。这意味着需要将缓存对象中可以转移到二级缓存的部分复制出来,并且在查找时需要将二级缓存中存储的数据提供给对象构造函数。对于 RocksDB 缓存对象,如数据块、索引和过滤器块以及压缩字典,解包涉及复制出块的原始未压缩块,打包涉及使用原始未压缩数据构造相应的块/索引/过滤器/字典对象。

我们考虑的另一种选择是现有的 PersistentCache 接口。但是,我们决定不追求它并最终弃用它,原因如下:

1.它直接暴露给表读取器代码,这使得实现不同策略将其扩展到更复杂的准入控制策略变得更加困难。

2.该接口不允许自定义内存分配和对象打包/解包,因此无论如何都必须定义新的 API。

3.当前的 PersistentCache 实现非常简单,没有任何准入控制策略。

应用程序接口

RocksDB 的块缓存和二级缓存之间的接口被设计为允许可插拔实现。对于企业内部使用,我们计划使用带有wrapper的Cachelib提供插件实现,并使用folly等fbcode库,RocksDB无法直接使用,来高效实现缓存操作。下图显示了块的插入和查找流程:

二级缓存中的项目由 SecondaryCacheHandle 引用。句柄可能不会立即准备好或具有有效值。调用者可以调用 IsReady() 以确定它是否准备就绪,并且可以调用 Wait() 以阻塞直到它准备就绪。调用方必须在准备就绪后调用 Value() 以确定项目是否已成功读取。Value() 必须在失败时返回 nullptr。

二级缓存的用户(例如,通过 LRUCache 间接调用的 BlockBasedTableReader)必须实现 CacheItemHelper 中定义的回调,以便于解包/打包对象以保存到二级缓存和从中恢复。必须实现 CreateCallback 以从二级缓存中的原始数据构造可缓存对象。

二级缓存提供者必须提供 SecondaryCache 抽象类的具体实现。

SecondaryCache 由用户通过在 LRUCacheOptions 中提供指向它的指针来配置。

当前进展

最初的 RocksDB 对二级缓存的支持已经合并到主分支中,并将在 6.21 版本中提供。这包括在实例化 RocksDB 的 LRU 缓存(易失性块缓存)时为用户提供一种配置二级缓存的方法,将从 LRU 缓存驱逐的块溢出到闪存缓存,将块从 SecondaryCache 读取到 LRU 缓存,更新工具例如 cache_bench 和 db_bench 来指定闪存缓存。相关的 PR 是#8271#8191#8312

我们使用上述 PR 以及基于 Cachelib 的 SecondaryCache 实现制作了端到端解决方案的原型。我们运行了一个 mixgraph 基准测试来模拟真实的读/写工作负载。结果显示,与没有本地缓存相比,使用本地闪存缓存可提高 15%,网络读取减少约 25-30%,缓存未命中率相应减少。

未来展望

在短期内,我们计划执行以下操作以将 SecondaryCache 与 RocksDB 完全集成:

1.使用DB session ID作为缓存键前缀,保证唯一性和可重复性

2.优化 MultiGet 和迭代器工作负载的闪存缓存使用

3.压力测试

4.更多基准测试

从长远来看,我们计划将其部署在 Facebook 的生产环境中。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词: RocksDB 缓存 云计算

相关推荐

技术专区

关闭
狡兔三窟什么意思 海参吃了有什么好处 火碱是什么东西 奇异果和猕猴桃有什么区别 血红蛋白什么意思
喝酒后胃不舒服吃什么药 人为什么会近视 石楠花是什么味道 耳朵突然听不见是什么原因 胃酸反流是什么原因造成
雅戈尔男装什么档次 梦见手机摔碎了是什么意思 天津是什么省 身体缺钾会有什么症状 神经衰弱吃什么药最好
肾气不足是什么原因 得济是什么意思 家里有壁虎是什么征兆 向日葵什么时候采摘 艾滋病初期皮疹是什么样的
平安扣适合什么人戴hcv8jop7ns3r.cn 手指甲上的月牙代表什么hcv7jop6ns3r.cn 农村一般喂金毛吃什么beikeqingting.com 花椒什么时候成熟hcv8jop0ns0r.cn 美国为什么不建高铁hcv8jop3ns2r.cn
白细胞少会引起什么病ff14chat.com 绿豆和什么相克hcv9jop5ns5r.cn 宫颈糜烂吃什么药hcv9jop2ns0r.cn 筱的意思是什么shenchushe.com 蚕丝衣服用什么洗最好hcv8jop7ns6r.cn
膝跳反射属于什么反射hcv9jop1ns4r.cn 汗疱疹用什么药膏最好hcv8jop7ns3r.cn 笔走龙蛇是什么生肖hcv7jop9ns3r.cn 腔梗灶是什么意思baiqunet.com 梦见抓鱼是什么预兆hcv7jop7ns0r.cn
操逼是什么感觉hcv9jop7ns4r.cn 尿酸高不能吃什么食物hcv8jop5ns2r.cn 咽喉炎吃什么药hcv8jop9ns6r.cn 什么不已hcv8jop5ns8r.cn 感冒流黄鼻涕吃什么药gysmod.com
百度