跳到主内容
快讯直播
AI智模界
AI 词典

学习型查询优化器:让模型替数据库挑执行路线

一句话定义:学习型查询优化器(Learned Query Optimizer)是用机器学习模型,部分或全部取代数据库里"按公式估代价、挑最便宜计划"的老逻辑,让它从历史执行数据中学会"这条 SQL 该怎么跑最快"。

为什么需要它:SQL 只说"要什么",不说"怎么拿"。同一条查询,先扫小表再连接,还是先连接再过滤,耗时能差几个数量级。传统优化器靠代价模型(cost model)给每种方案估个价:要读多少行、每行多贵,然后选总价最低的。问题在于"估算"经常离谱——统计信息过期、列与列相关、数据倾斜,基数估错 10 倍,代价可能错上百倍。

打个比方:经典优化器像只看地图和限速牌估时间的老司机;学习型优化器像手里握着几百万条真实行车记录,直接说"这个点走这条路,历史平均 12 分钟"。

训练数据怎么造(最难的一环):

1. 线上查询日志配真实执行耗时——最贴近现实,但只覆盖"走过的路";

2. 主动采样:随机生成或改写 SQL 并真的执行一遍,把实测耗时当标签——覆盖广,但很贵;

3. 让经典优化器产出多个候选计划,学一个排序模型(learning to rank)挑最好的。

特征上,通常把执行计划树编码成序列或图,输入表基数、谓词选择率、连接结构等,输出预测耗时或"哪个计划更优"。

和邻近概念的分界

  • 学习型基数估计(learned cardinality estimation):只替换"估行数"这一步,常作为经典优化器的插件;
  • 学习型计划选择:直接决定用哪个计划,可以端到端生成;
  • 自动索引 / 自动调参:改的是数据库的长期配置,不是这一次查询的路线。
经典代价优化器学习型优化器
依据人工写的代价公式 + 统计信息从执行数据学到的预测模型
冷启动立刻可用需要数据和训练
主要风险基数估计误差被层层放大遇到没见过的 schema 或分布就失灵
可解释性能说清为什么选它多为黑盒
维护更新统计、调参数重训、监控漂移、备好回退

"4B 模型生成的计划比 Postgres 快 81%"怎么看:这类结果一般指在某个固定基准上,用几十亿参数的小模型直接生成执行计划,平均耗时优于 PostgreSQL 默认计划。它说明"小模型 + 好数据"在结构化决策上确实有戏,但有三点要记住:提升多是平均值,尾延迟未必更好;基准的 schema 和数据分布固定,换到自家库未必复现;标签要靠真跑查询换,成本不低。具体数字以原论文和代码仓库为准。

落地边界:生产上很少"一把换掉"优化器,更常见的是旁路——用模型挑候选、给建议,或只接管少数已知易错的查询类型,同时保留经典优化器兜底和一键回退。

对你的意义:后端和 DBA 近期能落地的,多半是慢查询诊断加改写、索引建议;AI 从业者可以把它当成"结构化决策 + 昂贵反馈"的典型题,思路和排序模型、强化学习相通。普通用户感觉不到它的存在,但报表可能因此快几秒——前提是监控和回退都在位。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。