OCP 上的 SQL 监控服务主要有 TopSQL 和 SlowSQL 两部分,目前可开放给 DBA 以及普通用户,用来定位集群运行性能异常及普通 SQL 执行异常,通过分析 TopSQL 和 SlowSQL,达到解决集群性能异常问题和提高 SQL 执行效率的目的。

背景信息

TopSQL 和 SlowSQL 的区别如下:

  • TopSQL 为不同内容的 SQL 按执行效率高低进行排序展示;

  • 慢查询为所有超过慢查询阈值的 SQL 按执行效率进行排序展示,可通过指定 SQL 内容分析某个具体 SQL 在不同时间段内性能变化的原因。

TopSQL 和 SlowSQL 的用途如下:

  • TopSQL 查询结果通常可反映出一个 OceanBase 集群、租户或服务器在某段时间内所执行所有不同类型 SQL 的性能差异,通常用它可定位到数据库中性能较差的 SQL。

  • 而慢查询查询结果通常可反映出某条 SQL 在不同的时间段内性能变化,通常用它可定位出SQL 性能变化的原因。

说明

不同 OCP 版本的操作界面可能不同,本节以 OCP V2.4.4 版本为例提供操作指导,OCP 其他版本的操作请参考对应版本的《OCP 用户指南》文档。

TopSQL

您可以通过筛选条件筛选出异常的 SQL,并通过 SQL 历史趋势和物理执行计划来定位 SQL 执行异常的原因,从而解决您的问题。

  1. 登录 OCP。

  2. 在页面右上角单击 回到旧版

  3. 在左侧导航栏上,单击 监控 > TopSQL,进入 TopSQL 监控界面。

  4. 在页面上方,可选择目标集群集群、Zone、OBServer、租户以及时间范围维度。

    建议时间起止时间不超过一天,否则可能导致界面查询超时。

    设置查询条件

  5. 在搜索到目标范围内的 SQL 集合后,在 扩展列 列表中选择需要展示的性能指标并在 SQL 类型 列表中选择指定类型。

    选择列和SQL类型

  6. 通常可通过 响应时间****最慢一次执行耗时 指标精确定位到对应的 SQL,单击 SQL 序号,进入 SQL 详情界面,查看详细 SQL 文本及 SQL 历史趋势

    SQL 详情页面

  7. SQL 诊断 区域单击 物理执行计划 页签,通过物理执行计划找到 SQL 执行异常原因。

SlowSQL

慢 SQL 问题极大的影响数据库的稳定性。从数据库角度看:每个 SQL 执行都需要消耗一定 I/O 资源,SQL 执行的快慢,决定资源被占用时间的长短。假设总资源是 100,有一条慢 SQL 占用了 30 的资源共计 1 分钟。那么在这 1 分钟时间内,其他 SQL 能够分配的资源总量就是 70,如此循环,当资源分配完的时候,所有新的 SQL 执行将会排队等待,从而影响数据库系统的吞吐率。从应用的角度看:SQL 执行时间长意味着等待,在 OLTP 应用中,用户的体验较差。所以当数据库出现负载高、性能抖动等问题,DBA 或者开发首先都会查看是否有慢 SQL 在执行。

  1. 登录 OCP。

  2. 在页面右上角单击 回到旧版

  3. 在左侧导航栏上,单击 监控 > SlowSQL,进入 TopSQL 监控界面。

  4. 在页面上方,可选择集群、Zone、OBServer、租户、用户名、SQL_ID(通常相同执行计划的 SQL 拥有相同的 SQL_ID)、Query SQL、时间维度,单击 搜索 后即可得到指定时间内包含 Query SQL 输入的内容的 SQL 统计。

    注意

    此界面展示指标为固定指标,无法像 TopSQL 结果指标一样进行自定义指标。

    设置 SlowSQL 查询条件

  5. 单击 查看,可看到具体 SQL 明细内容,其中 elapsed_time 指标单位为微秒。

    查看 SQL 明细