OCP 上的 SQL 监控服务主要包括 TopSQL 以及 SlowSQL 两部分。
背景信息
TopSQL 以及 SlowSQL 的说明如下:
TopSQL:是指总计执行时间最长的 SQL 语句。
TopSQL 为不同内容的 SQL 按执行效率高低进行排序展示,TopSQL 的查询结果通常可反映出一个 OceanBase 集群、租户或服务器在某段时间内所执行所有不同类型 SQL 的性能差异,通常用它可定位到数据库中性能较差的 SQL。
SlowSQL:是指执行超过一定时间的 SQL,可通过 SlowSQL 诊断识别风险语句,规避风险。
SlowSQL 的查询结果通常可反映出某条 SQL 在不同时间段内的性能变化,通常用它可定位出 SQL 性能变化的原因。
TopSQL 诊断
TopSQL 是指总计执行时间最长的 SQL 语句,在 OCP 的 租户 页面中,您可以根据时间范围、OBServer 对 TopSQL 进行筛选查询,并在 SQL 列表中查看 SQL 详情。
在 OCP 上执行 TopSQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在 租户列表 中单击具体的租户进入租户 总览 页面。
在左侧导航栏单击 SQL 诊断 ,进入 SQL 诊断 页面。
若集群参数 enable_sql_audit 和租户参数 ob_enable_sql_audit 中任何一个未配置成打开,则 SQL 诊断 页面将缺失 SQL 诊断数据。可通过提示中的按钮修改参数值。

单击 TopSQL 页签。
对 TopSQL 进行筛选。
配置筛选条件
时间范围:可在 时间范围 下拉框中选择 近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时来快速选择时间范围;也可在下拉框中选择自定义时间,并配置开始时间和结束时间。默认显示近 30 分钟内的信息。
OBServer:选择 OBServer,查询时将只查询在该 OBServer 上执行的 SQL。
内部 SQL:若勾选,则查询结果中会包含由 OceanBase 内部发起的 SQL。
关键词:查询结果中会显示 SQL 文本中包含该关键词的 SQL。
高级搜索:下拉框中选择 SQL ID、执行次数、每秒执行次数 等指标,并配置指标值,查询时将获取指标满足条件的 SQL 展示在查询结果列表中。

单击 查询 ,下方列表中将展示所有符合查询条件的 SQL。
单击 导出 TopSQL 按钮,将导出列表中展示的所有 SQL。
查看 TopSQL 信息。
单击 列管理 ,即可在弹出框中选择需要查看的信息。勾选完成后即可在 TopSQL 列表中查看到相关信息。

在 TopSQL 页签下, 可查看已配置展示的列。可复制 SQL 文本,根据数据库和用户对 SQL 文本进行筛选,根据执行次数、总响应时间、响应时间和 CPU 时间对 SQL 文本进行排序。

单击 SQL 文本,您可进入具体 SQL 页面。
您可在 SQL 文本 区域 复制 或 查看全部 SQL 信息。

查看历史趋势:您可选择不同 IP、不同时间段的不同指标查看历史趋势。

查看执行计划:通过选择不同的 OBServer 和时间区间,查看 Plan Hash、合并版本、执行计划类型、计划生成时间、CPU 时间 和 命中率 。并可对 Plan Hash 进行复制。

单击 Plan Hash 列的内容,您可查看执行计划详情。

继续单击 Server IP 列的内容,您可查看该 Plan 在这台服务器上的执行详情。
查看索引绑定:您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 SQL 与索引绑定。您可通过黑屏或连接 OceanBase 开发者中心(OceanBase Developer Center,ODC)创建索引。
说明
OUTLINE 功能的实现基于 OceanBase 本身支持的 HINT 功能和 plan cache 功能。HINT 通过指定索引,指定连接方法等影响物理计划的生成路径选择。plan cache 将物理执行计划缓存起来,当在同样的环境下,同一 SQL 的处理不再需要经过 parser,resolver,rewrite,optimizer 等环节来生成物理执行计划,直接从 plan cache 中获取,加快 SQL 语句的执行。 OUTLINE 功能通过 HINT 来描述具体如何固定计划,通过改变 plan cache 中查询对应的物理执行计划,来起到固定物理计划的效果。
OCP 提供索引绑定 Outline 功能,用户选定一个索引绑定在一个 SQL ID 上,从而让 OB 在执行时选择这个索引, 目前一个 SQL ID 仅支持绑定一个索引。关于绑定,也可参考 OceanBase 数据库的 计划绑定 来理解。





