数据库查询引擎:推式 vs. 拉式

2025-04-16

本文探讨了数据库查询引擎中推式(push)和拉式(pull)两种模式的差异。拉式模式类似于迭代器模型,消费者驱动数据获取;而推式模式则由生产者驱动,数据主动推送给下游操作符。推式模式在处理DAG形查询计划(例如SQL中的WITH语句)方面更有效率,因为生产者可以将数据同时推送到多个下游操作符,避免了数据重复计算和不必要的缓冲。然而,拉式模式在处理某些算法(如merge join和LIMIT)时更方便。文章还讨论了缓存效率、代码简洁性以及两种模式在不同场景下的适用性,最终指出没有绝对的优劣之分,选择取决于具体需求。

开发 推拉模式