分布式数据库从入门到实战
彭旭
惟客数据总架构师
175 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 3 讲/共 28 讲
分布式数据库从入门到实战
15
15
1.0x
00:00/00:00
登录|注册

02|分布式存储数据结构LSM,如何优化读写性能?

你好,我是彭旭。
当前数据库都使用硬盘来持久化存储数据。市面上的硬盘主要分为 SSD 固态硬盘和 HHD 机械硬盘。其中,SSD 固态硬盘读写性能高,但是价格贵,传统关系型数据库用得比较多。
大数据、分布式存储由于数据量大,使用 SSD 硬盘会导致存储成本过高。所以,大多数分布式存储引擎,比如 HDFS 都使用 HDD 机械硬盘作为数据节点的存储设备。
那么问题来了,HHD 的读写性能可不像 SSD 那么高。数据如果排序后存储在数据文件里,直接更新的时候,可能会涉及磁盘的随机 IO,使用 HDD 硬盘会导致性能问题。
那么,这些存储引擎怎么才能在使用机械硬盘存储的情况下,解决更新数据可能需要随机写入,导致性能不好的情况呢?
在大数据领域,针对数据存储出现了很多用来优化随机读写或者说平衡读写性能的技术,从文件的组织形式来说可以分为两种。
第一种,Copy-On-Write。这个类似 Java 并发编程里面的 CopyOnWriteArrayList,数据新增、更新、删除的时候,会去找到数据应该归属的文件,将这个文件用最新的内容覆盖后重写一个新的文件。
这种模式对读非常友好,读取的时候只需要读取最新的文件即可得到最新的内容。但是写入的时候成本很高。因此,它适合写入不多,读取频繁的场景。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

1. LSM树的出现是为了解决磁盘随机I/O速度过慢的问题,将数据的随机磁盘I/O读写都转化为内存的读写,然后通过批量写入磁盘和延迟合并操作来提高写入性能。 2. LSM架构中的MemStore组件在内存中使用有序的数据结构,如跳表,将写入的数据排好序,当达到阈值或一定时间后,将数据刷新输出到磁盘,实现磁盘的批量顺序写入,提高写入性能。 3. LSM引入WAL(Write-Ahead-Log)来解决内存数据丢失问题,数据写入MemStore之前,会将对数据的操作先记录到WAL日志文件,以追加的形式批量顺序写入磁盘,保证数据不丢失。 4. HBase在后台引入了文件合并Compact机制,包括Minor Compact和Major Compact,用于合并StoreFile文件,清理过时数据,提升读取效率。 5. HBase还引入了布隆过滤器来过滤掉一些明确不存在数据行的文件,以减少读取数据时需要扫描的StoreFile数量,提升数据读取性能。 6. 布隆过滤器可以非常快速地检查出一个元素是否在一个集合中,但可能存在“假阳性”,即误报的情况。 7. 布隆过滤器的位图长度和哈希函数的个数需要权衡,以降低误报率。 8. 了解LSM的应用可以帮助读者更好地理解存储引擎的性能优化和应用设计,以及在实际场景中如何应用类似的架构来解决各种问题。 9. 通过LSM的应用,读者可以学习如何在实际场景中优化存储引擎的读写性能,以及如何平衡各种性能和准确性的需求。 10. HBase通过LSM和布隆过滤器等设计,实现了在使用机械硬盘的情况下,也能够实现毫秒级的响应,适合批量写入较多、查询较少的场景。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式数据库从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)