SuperAPI AI 工具集

mariadb-impl-query-optimization

通用与其它

查看项目

更新于 10-15 22:18

技能介绍

用途:面向 MariaDB 慢查询排查与优化,指导在加索引前、引入提示前先理解并验证执行计划。

主要能力:一是阅读 EXPLAIN,关注 type 列(ALL 为全表扫描,range 为分界,index 为全索引扫描)与 Extra 中的 Using filesort、Using temporary 等信号;二是在 EXPLAIN FORMAT=JSON 基础上,用 ANALYZE FORMAT=JSON 实际运行查询,对比 rows 预估与 r_rows 实际;三是用索引提示 USE INDEX、FORCE INDEX、IGNORE INDEX 及 FOR JOIN / FOR ORDER BY / FOR GROUP BY 修饰符干预计划选择;四是调整 optimizer_switch 标志,注意其名称与默认值不同于 MySQL 8,如默认关闭 mrr、mrr_cost_based 等;五是用 optimizer_trace 读取优化器完整决策日志;六是用 ANALYZE TABLE 刷新统计。

使用方式:先用 EXPLAIN 获得计划,再用 ANALYZE FORMAT=JSON 校验预估;预估偏差大则刷新统计;预估正确但计划仍差时检查 optimizer_switch;优化器拒绝明显更优索引时启用 optimizer_trace。示例:SET optimizer_trace='enabled=on'; 后查询 INFORMATION_SCHEMA.OPTIMIZER_TRACE。

限制与注意:ANALYZE 诊断只用于 SELECT,不可用 ANALYZE UPDATE 或 ANALYZE DELETE;FORCE INDEX 仅用于验证而非长期生产修复;不应全局设置 optimizer_switch 标志;不要套用 MySQL 8 的优化器假设。

适用场景:慢查询分析、索引添加前评估、执行计划验证与提示引入前的诊断。