2017年-Talkingdata_【T112017-数据工程和技术分会场】使用TerarkDB提升MySQL性能和压缩率_13页_1mb
报告摘要
使用TerarkDB提升MySQL的性能和压缩率
核心内容
TerarkDB 是一种新型的存储引擎,通过整合 RocksDB 的接口和自身优化的底层算法,进一步增强了 MySQL 在数据存储和访问方面的性能与压缩效率。该技术特别适用于处理海量随机访问的场景,如新闻资讯、搜索引擎、舆情监控和电商商品检索等,这些场景中对随机读的优化需求尤为迫切。
主要观点
- 随机读优化不足:当前主流数据库(如 MySQL、MongoDB、TiDB 等)在处理大量随机读请求时,缺乏高效的解决方案,通常只能通过增加内存或建立额外索引来缓解。
- 存储成本高昂:内存和 SSD 价格仍然较高,且 SSD 寿命有限,因此需要在存储效率和成本之间寻求平衡。
- TerarkDB 优势:TerarkDB 在不改变用户现有数据库使用逻辑的前提下,优化了存储引擎的底层算法,提升了压缩率和访问性能,同时具备更高的通用性和整合性。
- MyRocks 适配:TerarkDB 通过适配 Facebook 开源的 MyRocks 存储引擎,进入 MySQL 生态,结合了 RocksDB 的 LSM(Log-Structured Merge-Tree)架构优势和 TerarkDB 的压缩算法。
关键信息
存储引擎对比
| 存储引擎 | 特点 |
|---|---|
| TerarkDB | 支持全局压缩,无需解压即可提取单条记录,压缩率接近理论上限 |
| InnoDB | MySQL 默认存储引擎,性能稳定但压缩率较低 |
| RocksDB | 支持 LSM 架构,随机写性能优异,是 MyRocks 的基础 |
| LevelDB | 简单的键值存储,不支持复杂查询 |
| WiredTiger | 支持压缩和加密,但压缩率和性能仍有提升空间 |
| MyRocks (RocksDB Adapter) | 支持 MySQL,但存在部分功能限制(如不支持外键) |
压缩算法
- CO-Index(Compressed Ordered Index):一种高度压缩的索引结构,支持通过 ID 反查 KEY,区别于传统 B+ 树。
- PA-Zip(Point Accessible Zip):一种全局压缩算法,允许在不解压数据块的情况下提取单条记录,从而减少内存占用。
- Succinct Data Structure:基于位向量的压缩结构,内存占用仅为传统指针技术的 1/30,但性能较低,需工程优化。
- Nested Patricia Trie:对原生 Patricia Trie 进行嵌套压缩,进一步提升数据压缩率。
- LZ系列算法变种:采用“全局字典”+“局部字典”方式,结合滑动窗口优化,压缩率理想,但对 CPU 负载较高。
压缩效果与测试数据
- 数据存储大小:使用 TerarkZip 表格式,存储空间显著减少。
- 读取内存使用:TerarkDB 在读取时内存占用更低,尤其在内存受限的情况下表现更优。
- 读取性能:在内存限制为 4G 和不限制的情况下,TerarkDB 的 QPS(每秒查询数)表现优于传统存储引擎。
实际应用
- Amazon Movie Reviews Open Dataset:原始数据为 9.1GB,使用 TerarkDB 后存储效率显著提升,读取性能也有明显改善。
- 兼容性:TerarkDB 与 MyRocks 100% 兼容,用户可直接从官网下载试用。
- 功能限制:MyRocks 对 MySQL 的部分功能(如外键约束)不支持,但 TerarkDB 在此基础上进行了优化。
总结
TerarkDB 通过结合 RocksDB 的接口和自身优化的压缩算法,为 MySQL 提供了更高效的存储和访问方案。其核心优势在于对随机读的优化和高压缩率,尤其适合处理海量数据的场景。虽然在写入过程中对 CPU 负载较高,但可通过写入限流或计算与存储分离的方式来缓解。目前,TerarkDB 已通过 MyRocks 适配进入 MySQL 生态,具备良好的兼容性和应用前景。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载