LSM-Tree的Compaction为何让数据库工程师又爱又恨:从写放大到读放大的三十年权衡

2018年,某互联网公司的一条生产事故报告引发了广泛关注:他们的RocksDB实例在写入量激增时突然"卡死",应用层请求超时雪崩。排查日志后发现,罪魁祸首是Write Stall——RocksDB的内部保护机制在L0层文件过多时主动暂停写入。这不是孤例。在LSM-Tree架构的数据库中,Compaction(合并压缩)机制既是性能的守护者,也可能成为故障的导火索。 ...

12 min · 5976 words

索引越多查询越慢?从写入放大到优化器误判的完整技术解析

一个开发者盯着慢查询日志,发现一条耗时3秒的SELECT语句。他熟练地添加了一个索引,查询时间降到50毫秒。第二天,他又用同样的方法解决了另一个慢查询。一个月后,这张表已经积累了12个索引。 ...

11 min · 5161 words

时序数据库如何用1.37字节存储一个数据点:从压缩算法到存储引擎的十五年演进

2015年,Facebook的监控团队面临一个看似无解的问题:每秒产生700万个数据点,如果按照传统方式存储,仅内存就需要16TB。这个数字意味着任何规模的集群都无法在经济上承受。但他们最终找到了答案——通过一种称为Gorilla的压缩算法,将每个数据点从16字节压缩到平均1.37字节,压缩比达到12倍。 ...

11 min · 5296 words