Page 353 - 《软件学报》2026年第2期
P. 353
832 软件学报 2026 年第 37 卷第 2 期
规划模型, 通过解空间剪枝实现高效求解. 随着机器学习技术的发展, AIMeetsAI [122] 将索引选择转化为分类问题,
而 DISTILL [102] 利用神经网络学习负载-索引映射关系以减少优化器调用开销. ISUM [103] 通过负载压缩技术提升算
[105] [106]
法可扩展性. 在强化学习方向, NoDBA 首次尝试单列索引推荐, LanIdxAdvis 扩展至多列索引并引入贪心因
子优化探索策略, MCTS [104] 则基于索引单调性设计新型代价评估函数.
基于智能算法的索引推荐方法根据响应机制差异, 智能算法可分为主动预测和反应分析两类. 主动预测方法
如文献 [123] 采用时间序列预测负载特征, COLT [107] 基于历史窗口预测索引收益, QB5000 [108] 则利用神经网络预测
查询到达率. 反应分析方法强调动态响应: PDAlerter [109] 通过代价边界分析触发调优, OnlinePT [110] 实时淘汰低效索
引, WFIT [111] 引入工作函数量化索引收益, AIM [112] 则通过克隆环境验证索引有效性. Learned index benefits (LIB) [113]
提出端到端代价估计器, 通过注意力机制解决索引交互问题, 并采用迁移学习增强适应性.
基于强化学习的索引推荐方法将索引推荐建模为马尔可夫决策过程, 其中代理 (agent) 根据数据库状态 (state)
生成索引配置 (action), 并以执行代价作为奖励 (reward) 进行优化. DBA Bandits [114] 采用多臂老虎机模型线性评估
配置收益, SWIRL [115] 使用 PPO 算法优化状态编码策略. DRLindex [116] 扩展至分布式场景, HMAB [117] 通过分层结构
支持多配置联合推荐. 蒙特卡洛树搜索方法中, MCTS [104] 基于索引单调性提升搜索效率, AutoIndex [118] 实现增量式
索引管理.
3.1.2.3 索引效益估计
索引效益估计是量化候选索引对系统性能提升的关键步骤, 需综合评估时间收益 (如查询加速) 与空间成本
(如存储占用). 其核心挑战在于准确预测索引对查询计划的影响, 避免“过度索引”或“索引失效”.
基于优化器的代价估计方法直接依赖数据库优化器的代价模型, 通过模拟索引对查询计划的影响, 估算索引
带来的执行时间减少量. 在不实际创建索引的情况下, 通过元数据模拟索引的存在, 利用优化器生成假设性查询计
划并计算代价差异. 例如, DB2 Advisor [120] 通过优化器反馈筛选候选索引. 这些方法对候选索引进行动态评估, 结
合历史统计信息 (如选择度、基数) 优化代价预测精度. 这些方法与数据库优化器深度集成, 结果可解释性强, 适
用于静态负载场景, 但是优化器的代价模型可能存在偏差 (如错误的选择度估计), 且无法处理复杂索引交互效应.
基于机器学习的代价估计方法通过机器学习算法 (如强化学习、深度神经网络) 从历史负载数据中学习索引
收益模式, 预测候选索引对负载的整体提升效果. 这些方法适应动态负载变化, 能发现传统方法忽略的复杂索引组
合模式. 但是依赖大量训练数据, 模型可解释性差, 且计算开销较高.
3.1.3 数据库诊断
智能数据库诊断是一种融合人工智能技术与传统运维经验的全生命周期管理方法, 其核心在于通过数据驱动
的自动化流程, 实现异常感知、根因定位与优化执行的闭环管理. 这一流程的构建不仅需要覆盖数据库内部的运
行状态, 还需整合操作系统、网络设备等全链路指标, 形成立体化的监控与推理体系.
如图 6 是智能数据库诊断的标准化流程, 智能数据库诊断首先从数据库系统采集和监控数据, 然后针对其中
存在的异常进行检测, 在获取异常数据后需要根据异常数据进行根本原因定位, 最后提出修复和优化的建议. 最后
系统需要不断进行这个过程以实现对数据库系统的不断监控.
数据采集与监控 异常检测 根因定位 修复与优化
反馈与迭代
图 6 数据库诊断标准化架构
3.1.3.1 数据采集和监控
数据采集与监控是诊断流程的基石. 系统需实时捕获数据库运行的全维度指标, 包括硬件资源 (CPU 利用率、
内存占用率、磁盘 I/O 吞吐量)、查询性能 (响应时间、锁等待时长)、网络状态 (丢包率、延迟) 以及元数据 (索
引结构、表分区策略). 例如, PinSQL [124] 通过云数据库实例的日志代理采集查询执行计划与资源消耗数据, 而
EGADS [125] 则针对大规模时间序列设计轻量级采集框架, 支持千级指标的秒级同步. Twitter 的 S-H-ESD 进一步引

