OceanBase 慢 SQL 优化实战分享(从 3s 到 80ms)

大家好,最近在业务中把 OceanBase 的一条核心慢 SQL 从 3 秒优化到 80 毫秒,把实战过程分享给社区,希望能帮到大家。

一、环境信息

  • OB 版本:OceanBase 4.2.1 社区版
  • 业务场景:多表关联订单查询,单表数据量 500w+
  • 问题:SQL 执行慢、接口超时、全表扫描

二、优化步骤

  1. 慢 SQL 定位 使用 show processlist 找到慢 SQL,通过 explain analyze 分析执行计划,确认未命中索引、数据扫描量大、排序开销大。

  2. 索引优化 按照等值条件在前,范围条件在后原则,建立联合索引,并做成覆盖索引,避免回表。

  3. 并行与内存调优 适当调整 ob_parallel_degree 并行度,优化 work_area_size,避免排序落盘。

  4. 稳定执行计划 对抖动 SQL 做执行计划绑定,保证查询稳定。

三、避坑总结

  • OceanBase 索引要结合分区特性,不要盲目照搬 MySQL 经验
  • 避免 select *,只查需要的字段
  • 优化后一定要压测,防止影响写入
  • 定期清理过期执行计划

优化后接口成功率从 75% 提升到 99.9%,CPU 使用率明显下降。欢迎大家在评论区交流 OB 慢 SQL 优化经验,一起学习进步!

5 个赞

学习了

1 个赞

我也看不懂大神

2 个赞

感谢分享
https://skills.sh/amber-moe/oceanbase-doc-skills/oceanbase-sql-optimization
也可以看看这个skill

1 个赞