OceanBase比mysql查询效率总是要慢,如何调优


单位有个项目分别部署了两套,一个使用的是mysql库,另一个是OceanBase库,项目总是出问题,同事把问题归属到数据库的问题(OceanBase库是我建的,项目本身逻辑也有很大问题,屎山代码),同事一方面推脱责任,另一方面针对我;
用客户端连接工具连接后,查询确实慢了不少,如何调优,让其闭嘴

OceanBase是什么版本、什么规格,Mysql什么规格


image

这个问题很典型 下面是建议 。

    1. 在资源允许的情况下尽可能给这个业务租户多的资源。

OCP 集群页面下有个资源管理,截大图,可以显示当前集群节点总资源和租户资源分配情况。

    1. 充分利用 OCP 的 SQL 审计功能,在OCP里对应的是 租户中的性能诊断。
      SQL 审计可以让业务 SQL 无所遁形。SQL报错或者慢都有具体详细的信息(执行的时间点、耗时以及明细等等),MySQL这块能力很弱。用这个帮助开发去发现、改进 SQL 问题。
    1. 对比 MySQL和OB 要拿具体业务 SQL,并且前提是业务 SQL 要合理。一个大表全表查询,业务SQL这么写是不合理的,除非是后台数据仓库抽取数据。即使是抽取数据也是分批抽取,或者 SQL 里加上 并行 HINT 之类。 不合理的SQL 不要去争辩 性能问题。当真的是某个业务场景 SQL 在 OB 下相比 MySQL
      要明显的慢,再拿出来分析。需要提供 SQL、执行计划、SQL审计中的执行明细(耗时以及耗时明细等)、相关表数据量、数据特征分布等。
1 个赞
  1. 先用obdiag做一次巡检,看看是不是有些参数不合理,参考文档:OceanBase分布式数据库-海量数据 笔笔算数
  2. 和mysql对比性能,得反馈详细一点的信息,比如某张表查询慢、某条SQL查询慢等,最好把执行计划也发出来。

先对比一下在数据库服务器上运行时查询效率有什么区别,再对比客户端。

您把业务SQL 发下,针对 业务的SQL进行优化吧。 向您发的可以直接 并行。mysql至今不支持并行的。