中间结果落盘
Beta feature
本文介绍如何将大型运算符的中间计算结果落盘到本地磁盘和对象存储中。
概述
对于依赖内存计算进行查询执行的数据库系统,如 StarRocks,在处理包含聚合、排序和连接运算符的大数据集查询时,可能会消耗大量内存资源。当达到内存限制时,这些查询会因内存不足(OOM)而被强制终止。
然而,有时您可能希望某些内存密集型任务能够稳定完成,而性能不是您的首要考虑,例如构建物化视图,或使用 INSERT INTO SELECT 执行轻量级 ETL。这些任务可能会轻易耗尽您的内存资源,从而阻塞集群中运行的其他查询。通常,为了解决这个问题,您只能单独微调这些任务,并依赖资源隔离策略来控制查询并发。这在某些极端情况下可能特别不便且容易失败。
从 StarRocks v3.0.1 开始,StarRocks 支持将一些内存密集型运算符的中间结果落盘。通过此功能,您可以在性能上接受一定程度的下降,以显著减少内存使用,从而提高系统可用性。
目前,StarRocks 的中间结果落盘功能支持以下运算符:
- 聚合运算符
- 排序运算符
- 哈希连接(LEFT JOIN, RIGHT JOIN, FULL JOIN, OUTER JOIN, SEMI JOIN 和 INNER JOIN)运算符
- CTE 运算符(从 v3.3.4 开始支持)