【T112017-数据工程和技术分会场】使用TerarkDB提升MySQL性能和压缩率_14页_1mb
报告摘要
文档总结:使用TerarkDB提升MySQL的性能和压缩率
核心内容
本文档介绍了如何通过使用 TerarkDB 存储引擎来提升 MySQL 的性能和压缩率。TerarkDB 是一种基于 RocksDB 接口的存储引擎,通过引入其独特的压缩算法,可以在不改变用户现有数据库使用逻辑的前提下,显著优化数据存储和访问效率。
主要观点
- 随机读优化需求迫切:大多数互联网用户对在线服务的访问偏向于随机读,例如新闻资讯、搜索引擎、舆情监控、电商类商品检索等。目前没有很好的解决方案,只能通过增加内存或建立额外索引来缓解。
- 内存和SSD成本高昂:即使公司每月数据增长量不大,内存和SSD的价格仍然较高,且SSD寿命有限,因此需要更高效的存储方案。
- TerarkDB的优势:TerarkDB 基于 RocksDB 接口,将自身的压缩算法集成到 MySQL 中,提升其压缩率和读取性能,同时保持与 MySQL 的兼容性。
- 压缩算法设计:TerarkDB 采用 CO-Index(索引压缩算法)和 PA-Zip(数据压缩算法),实现了高效的压缩与快速检索。
- CO-Index:通过树结构的高度压缩和通过ID反查KEY的功能,提升索引效率。
- PA-Zip:实现全局压缩,支持无需解压即可提取单条记录,降低内存占用。
- 可检索压缩技术:TerarkDB 的压缩算法能够在不依赖数据库缓存层(DB Cache)的情况下,实现高效的随机读取。
- Succinct Data Structure:一种内存高效的树结构表示方法,虽然性能不如传统指针技术,但通过工程优化可以接近其性能。
- Nested Patricia Trie:对 Patricia Trie 进行嵌套压缩,进一步提升数据压缩率。
- LZ系列算法变种:结合“全局字典”和“局部字典”的方式,使用滑动窗口进行数据压缩,达到理想的压缩效果。但需注意,全局字典的尺寸限制为12GB以内,更大字典对压缩率帮助有限。
- 性能与成本的权衡:虽然数据压缩算法对写入性能有影响,但可通过写入限流或计算与存储分离的方式进行优化。
关键信息
存储引擎对比
| 存储引擎 | 特点 |
|---|---|
| InnoDB | 传统MySQL存储引擎,支持事务,但压缩率和随机读性能有限 |
| RocksDB | 支持LSM结构,随机写性能优异,但压缩率和随机读性能仍有提升空间 |
| TerarkDB | 基于RocksDB接口,集成CO-Index和PA-Zip算法,显著提升压缩率和读取性能 |
压缩算法
- CO-Index:树结构高度压缩,支持通过ID反查KEY。
- PA-Zip:全局压缩,无需解压即可提取单条记录。
- Succinct Data Structure:使用位向量表示树结构,内存占用仅为传统指针技术的1/30。
- Nested Patricia Trie:嵌套压缩技术,进一步提升压缩率。
- LZ系列算法变种:结合全局字典和局部字典,使用滑动窗口,压缩率高但对CPU消耗较大。
实际应用案例
- Amazon Movie Reviews Open Dataset(原始数据9.1GB):
- 使用 MyRocks(RocksDB适配器)时,存储大小和内存使用较高。
- 使用 TerarkDB 时,存储大小和内存使用显著降低,且读取性能更高。
- 两种模式下,TerarkDB 明显优于 MyRocks。
TerarkDB与MySQL整合
- TerarkDB 通过 MyRocks(RocksDB的MySQL适配器)集成到 MySQL 中。
- 与 MySQL 的兼容性达到 100%。
- 支持 TerarkZip Table,进一步优化存储结构。
推荐资源
- 官方网站:www.terark.com
- 微信公众号:TerarkLab
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载