LSM实现热数据读写和range查询加速

简介: LSM-tree 上的读路径,从出生就带着镣铐。因为 CoW 的使用,读一条记录实际上需要把这条记录所有的增量碎片都找到。因为横跨内存和磁盘两种介质和有层次化的存储,这些碎片可能藏在各种犄角旮旯里面。更惨的是,如果是读一个范围内的记录,俗称 range scan,因为 LSM-tree 的每一层的 key range 是交叠的,那么一个 range 内的数据就很有可能会落在所有的层次上,为了把他们都找到,我们就需要每层都去读,这个工作量也不小。

LSM-tree 上的读路径,从出生就带着镣铐。因为 CoW 的使用,读一条记录实际上需要把这条记录所有的增量碎片都找到。因为横跨内存和磁盘两种介质和有层次化的存储,这些碎片可能藏在各种犄角旮旯里面。更惨的是,如果是读一个范围内的记录,俗称 range scan,因为 LSM-tree 的每一层的 key range 是交叠的,那么一个 range 内的数据就很有可能会落在所有的层次上,为了把他们都找到,我们就需要每层都去读,这个工作量也不小。

为了解决这个问题,目前的 LSM-tree 引擎把各种经典技术都用上了:各种索引、各种 cache。但是为了提高索引和 cache 的效率,让他们一直发挥比较好的作用,难度不小。以富贵论坛 cache 为例,X-Engine 中使用了两种经典的 cache,一种是 row cache,缓存记录级别的热数据,一种是 block cache,缓存数据块级别的热数据。Row cache 可以加速点查询,block cache 可以加速 range scan,一切看上去都是很完美的芭蕾舞。然而,当 compaction 被大王叫来巡山的时候,危险就发生了。因为 compaction 会重新组织数据块里面的内容,干掉一些老的 block,生成一些新的 block,传统的 cache 替换策略对老的 block 做的访问统计会失效,而新的 block 它不认识,没统计信息。此外,compaction 还会移动数据。这两点加起来,只要 compaction 巡了一次山,cache 里面缓存的记录就有很大可能出现大面积失效,导致原本可以命中 cache 的查询,不得不去访问磁盘,造成严重的延迟尖刺。

目录
相关文章
|
存储 Unix Linux
Linux 下文件和目录的本质区别和组成
Linux 下文件和目录的本质区别和组成
580 0
|
弹性计算 NoSQL Linux
在Alibaba Cloud Linux系统上安装Redis数据库流程
在Alibaba Cloud Linux系统上安装Redis数据库流程,阿里云持久内存服务器ECS可用于搭建Redis内存型数据库,云服务器吧以阿里云服务器ECS持久内存型、Alibaba Cloud Linux镜像操作系统安装Redis 6.0.5或Redis 3.2.12详细操作流程如下:
847 0
|
9天前
|
人工智能 测试技术 API
智谱旗舰模型GLM-4.6开源发布,代码能力对齐Claude Sonnet 4
作为GLM系列的最新版本,GLM-4.6是系列最强的代码Coding模型(较GLM-4.5提升27%)
450 14
|
7月前
|
人工智能 自然语言处理 API
零门槛,即刻拥有DeepSeek-R1满血版——调用API及部署各尺寸模型
本文介绍了如何利用阿里云技术快速部署和使用DeepSeek系列模型,涵盖满血版API调用和云端部署两种方案。DeepSeek在数学、代码和自然语言处理等复杂任务中表现出色,支持私有化部署和企业级加密,确保数据安全。通过详细的步骤和代码示例,帮助开发者轻松上手,提升工作效率和模型性能。解决方案链接:[阿里云DeepSeek方案](https://www.aliyun.com/solution/tech-solution/deepseek-r1-for-platforms?utm_content=g_1000401616)。
零门槛,即刻拥有DeepSeek-R1满血版——调用API及部署各尺寸模型
|
存储 负载均衡 容灾
MySQL数据库的分布式架构和数据分片方案
MySQL数据库的分布式架构和数据分片方案
|
10月前
|
存储 人工智能 安全
AI时代,存力 or 算力 哪个更重要
本文探讨了AI技术发展中算力与存力的重要性。算力指计算能力,对处理大数据和实时计算至关重要;存力则是数据存储能力,确保数据安全可靠,支持后续分析。两者相辅相成,共同推动AI技术的快速发展,缺一不可。
|
Ubuntu
修改虚拟机Ubuntu为桥接模式的静态IP
修改虚拟机Ubuntu为桥接模式的静态IP
778 0
|
编解码 边缘计算 自然语言处理
2024年5月计算机视觉论文推荐:包括扩散模型、视觉语言模型、图像编辑和生成、视频处理和生成以及图像识别等各个主题
五月发布的计算机视觉领域重要论文涵盖了扩散模型、视觉语言模型、图像生成与编辑及目标检测。亮点包括:1) Dual3D提出双模式推理策略,实现高效文本到3D图像生成;2) CAT3D利用多视图扩散模型创建3D场景,仅需少量图像;3) Hunyuan-DiT是多分辨率的中文理解扩散Transformer,可用于多模态对话和图像生成;4) 通过潜在扩散模型从EEG数据重建自然主义音乐,展示复杂音频重建潜力。此外,还有关于视觉语言模型和图像编辑的创新工作,如BlobGEN用于合成具有控制性的图像。
523 3
|
存储 关系型数据库 MySQL
MySQL 多表查询详解
MySQL 是一个强大的关系型数据库管理系统,多表查询是数据库操作中的重要部分之一。多表查询允许您从多个表中检索和操作数据,以满足复杂的数据需求。本文将介绍 MySQL 多表查询的基本概念、语法和示例,以及一些常见的多表查询场景。
1074 0
|
存储 Shell 数据处理
深入探讨Bash脚本中的数组
【8月更文挑战第20天】
198 0