为什么oceanbase能在普通硬盘上实现高TPS?
3 个赞
啊,是不是说反了啊
1 个赞
我觉得主要是两方面的设计,让 OB 具有准内存数据库的高效
-
基于LSM-Tree的存储引擎架构
LSM-Tree架构将数据分为两部分:
- MemTable:存放内存中的增量数据(支持读写),所有的插入、更新和删除操作首先在MemTable中完成。
- SSTable:磁盘上的基线数据(只读),当MemTable达到一定大小时会转储成SSTable文件。
这种架构的优势在于减少随机IO,通过将随机写操作转化为顺序写,避免传统数据库频繁修改磁盘页的问题,从而显著提高写入性能。
-
多级缓存与行缓存技术
为了优化读取性能,OceanBase实现了多层次的缓存机制:
- Block Cache:用于缓存SSTable中的数据块。
- Row Cache:针对单行热点数据的缓存,极大加速点查性能。
- 布隆过滤器(Bloom Filter):对于“空查”操作(即查找不存在的数据),布隆过滤器可以快速判断是否命中,减少不必要的磁盘访问。
这些机制确保即使数据存储在普通硬盘上,也能通过内存缓存大幅降低I/O延迟,提升OLTP场景下的响应速度。
3 个赞
一定要固态盘,机械硬盘会有问题
2 个赞
官方建议使用固态硬盘。另外所谓高TPS主要是由于将原来文件的随机写,改为类似日志写的顺序结构。
3 个赞
普通SSD
1 个赞
OceanBase 数据库能够在普通硬盘上实现高 TPS 的原因主要归结于其高效的设计和实现。首先,OceanBase 通过数据编码压缩技术实现高压缩,这种技术基于数据库关系表中不同字段的值域和类型信息,产生一系列的编码方式,比通用的压缩算法更懂数据,从而实现更高的压缩效率。此外,OceanBase 的自创分布式计算引擎能够使系统中多个计算节点同时运行 OLTP 类型的应用和复杂的 OLAP 类型的应用,真正实现了用一套计算引擎同时支持混合负载的能力,这样可以充分利用硬件资源。最后,OceanBase 在版本迭代过程中一直致力于提升数据库性能并降低资源消耗,包括代码优化、算法选择和系统架构设计等方面的持续改进。
详情请参考:
2 个赞
好好学习,天天向上