2017-【数据工程和技术分会场】使用TerarkDB提升MySQL性能和压缩率_14页-1mb
报告摘要
文档总结:使用TerarkDB提升MySQL的性能和压缩率
核心内容
本文档主要介绍如何通过 TerarkDB 存储引擎提升 MySQL 的性能和压缩率,尤其是在处理海量随机访问场景下的优化方案。TerarkDB 是一种基于 RocksDB 接口的存储引擎,通过引入自研的压缩算法和索引结构,显著改善了 MySQL 在高并发读取和数据存储成本方面的表现。
主要观点
- MySQL 的写入性能:当前 MySQL 的写入性能主要依赖于单节点的持续写入,多节点只读模式可满足大部分需求,如阿里云的 PolarDB。
- 随机读优化的缺失:对于大量随机读取的场景,目前没有有效的优化方案,只能通过增加内存或建立额外索引来缓解。
- 存储成本问题:内存和 SSD 价格依然较高,且 SSD 寿命有限,因此需要在存储效率和成本之间取得平衡。
- TerarkDB 的优势:TerarkDB 通过底层算法改进,提升了 MySQL 的压缩率和性能,且不改变用户现有数据库的使用逻辑,兼容性良好。
- MyRocks 的局限性:MySQL 使用 RocksDB 作为存储引擎(MyRocks)在某些功能上存在限制,如不支持外键约束等。
关键信息
存储引擎对比
| 存储引擎 | 特点 |
|---|---|
| TerarkDB | 基于 RocksDB 接口,引入自研算法,提升压缩率和性能 |
| InnoDB | 传统 MySQL 存储引擎,性能稳定但压缩率较低 |
| RocksDB | 支持 LSM 树结构,适合随机写入,被 MyRocks 使用 |
| LevelDB | 简单的键值存储,性能和压缩率一般 |
| WiredTiger | 支持压缩和内存优化,但与 TerarkDB 相比仍有差距 |
压缩算法
- CO-Index(Compressed Ordered Index):
- 高度压缩的树结构
- 支持通过 ID 反查 KEY
- PA-Zip(Point Accessible Zip):
- 全局压缩,无需解压即可提取单条记录
- 无需依赖数据库的 DB Cache 层
- 压缩率接近理论上限
数据压缩优化策略
- Succinct Data Structure:
- 通过位向量表达树结构,内存占用仅为传统指针结构的 1/30
- 性能较弱,需工程优化以接近指针性能
- Nested Patricia Trie:
- 对原生 Patricia Trie 进行嵌套压缩,进一步提升压缩率
- LZ 系列算法变种:
- 使用“全局字典”+“局部字典”方式进行压缩
- 滑动窗口技术优化压缩效果
- 全局字典限制在 12GB 以内,效果最佳
实测数据
- Amazon Movie Reviews Open Dataset 原始数据大小为 9.1GB
- 存储空间优化:
- 使用 TerarkDB 压缩后,存储空间显著减少
- 内存使用情况:
- 读取时内存占用较低,尤其在限制内存的情况下表现更佳
- 读取性能(QPS):
- 在内存限制为 4GB 时,TerarkDB 仍能保持较高的读取性能
- 在内存不限制的情况下,读取性能更优
技术整合与适配
- TerarkDB 与 MyRocks 的整合:
- 通过适配器将 TerarkDB 算法整合进 MyRocks
- 保持与 MySQL 的兼容性,无需修改现有逻辑
- 架构图示例:
- MySQL Server
- 抽象存储引擎层
- Adapter(TerarkDB 适配器)
- RocksDB
- TerarkZip Table(TerarkDB 的压缩表类型)
- 操作系统层
应用场景
- 随机读取密集型应用:如新闻资讯、搜索引擎、舆情监控、电商商品检索等
- 大数据存储与检索:适用于需要高压缩率和高性能读取的场景
- 成本敏感型系统:通过优化压缩率降低存储成本,同时减少对 SSD 的依赖
项目资源
- 官网:www.terark.com
- 微信公众号:TerarkLab
- 文档目录:mulu.baogaoba.xyz
- 联系 QQ:2083220015
总结
TerarkDB 是一种能够显著提升 MySQL 压缩率和性能的存储引擎,尤其适用于随机读取密集型场景。其核心优势在于引入了高效的压缩算法和索引结构,如 CO-Index 和 PA-Zip,以及对 RocksDB 的深度优化。尽管数据写入过程中对 CPU 的消耗较高,但可以通过写入限流或计算与存储分离的方式来缓解。TerarkDB 与 MySQL 的兼容性良好,可作为 MyRocks 的替代方案,帮助用户在存储成本和性能之间取得更好的平衡。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载