查询优化——即数据库确定检索和连接数据最有效方式的过程——是一项计算上极其困难的任务。具体而言,确定一组表的最佳连接顺序已知是一个 NP 困难问题。对于仅涉及三个表的查询,可能存在超过 4,600 种不同的连接树、方向、算法和扫描类型的组合。虽然像 Postgres 这样的专业数据库使用动态规划和遗传算法来剪枝搜索空间,但它们仍可能产生次优计划,尤其是在连接数量增加时。
为了解决这个问题,Rohan Bansal 训练了一个 4B 参数的模型来生成 Postgres 查询计划。模型最初表现挣扎,在 99% 的测试查询中无法生成有效的计划。然而,通过涉及监督微调 (SFT) 和智能体强化学习 (RL) 的多阶段训练过程,该模型最终在 113 个重度连接查询中实现了比 Postgres 默认计划 44.7% 的延迟降低。该训练利用了来自 GPT-6 Astra 智能体轨迹的离策蒸馏(off-policy distillation)以及自定义的 GRPO(Group Relative Policy Optimization)变体。这种强化学习方法根据计划的实际执行时间分配标量奖励,从而推动模型的权重向导致查询更快完成的策略转变。

该模型通过多阶段训练过程,在 113 个重度连接查询中实现了 44.7% 的延迟降低。
尽管取得了这些结果,从受控实验到生产环境的转变涉及重大的权衡。该实验是在完全放入内存的 8GB 数据集上进行的,这可能无法准确反映这些计划在海量、高并发的 OLTP(联机事务处理)工作负载中的表现,在这些负载中,页面缓存竞争和磁盘 I/O 会成为主导因素。此外,还存在针对特定数据形状“过拟合”的风险;如果底层数据相关性发生变化,或者模型由于幻觉而遗漏了特定的索引,计划可能会失败。最终,即使是 AI 生成的计划也受限于数据库底层统计数据的准确性;如果数据的逻辑顺序没有被完美捕捉,即使是最先进的优化器也可能难以找到真正的最优路径。