QuestDB 是一款开源的时序数据库,专为金融交易等高吞吐量、超低延迟的工作负载而设计。其核心创新点在于 **WINDOW JOIN** 操作符,它取代了复杂且低效的 SQL 变通方法,通过单一且高度优化的语法,实现在特定时间窗口内对数据进行聚合。
### 面临的问题
处理时间窗口连接的标准 SQL 方法(例如将 `ASOF JOIN` 与范围连接和 `UNION ALL` 结合使用)会产生庞大的中间数据集,导致查询优化器无法有效地进行并行化或向量化。随着数据规模的扩大,这些方法的性能往往会大幅下降。
### QuestDB 的解决方案
WINDOW JOIN 通过以下方式进行了优化:
* **数据级并行:** 将表切分为“页面帧”(page frames),由多个工作线程独立处理。
* **SIMD 聚合:** 将窗口数据复制到连续的、按键(per-key)划分的缓冲区中,使 QuestDB 能够利用手动调优的 SIMD 内核(AVX2)以极高的速度计算总和、平均值以及最小值/最大值。
* **高效内存利用:** 通过避免对每一个中间连接对进行实例化,QuestDB 保持了可预测且高效的内存使用。
在与 Timescale、DuckDB 和 ClickHouse 的基准测试对比中,QuestDB 的并行化 `WINDOW JOIN` 性能比最接近的竞争对手快达 **25 倍**,充分展示了专用操作符相较于通用 SQL 改写方案的优势。