欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/
OCP 上的 SQL 监控服务主要包括可疑 SQL、TopSQL 以及 SlowSQL 三部分。
背景信息
可疑 SQL、TopSQL 以及 SlowSQL 的说明如下:
可疑 SQL:是指根据诊断类型结合 SQL 的语句、执行历史、表结构进行诊断后,符合诊断特征的 SQL。
TopSQL:是指总计执行时间最长的 SQL 语句。
TopSQL 为不同内容的 SQL 按执行效率高低进行排序展示,TopSQL 的查询结果通常可反映出一个 OceanBase 集群、租户或服务器在某段时间内所执行所有不同类型 SQL 的性能差异,通常用它可定位到数据库中性能较差的 SQL。
SlowSQL:是指执行超过一定时间的 SQL,可通过 SlowSQL 诊断识别风险语句,规避风险。
SlowSQL 的查询结果通常可反映出某条 SQL 在不同时间段内的性能变化,通常用它可定位出 SQL 性能变化的原因。
说明
不同 OCP 版本的操作界面可能不同,本节以 OCP V3.1.0 版本为例提供操作指导,OCP 其他版本的操作请参考对应版本的《 OCP 用户指南》文档。
可疑 SQL 诊断
在 OCP 上执行可疑 SQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在租户列表中单击具体的租户进入租户概览页面。
在左侧导航栏单击 SQL 诊断 ,进入 可疑 SQL 页签。
对可疑 SQL 进行筛选。
在 时间范围 下拉框中单击 自定义时间 ,选择近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间;并在开始日期和结束日期中选择日期。默认显示近 30 分钟内的信息。

查看可疑 SQL 信息。
在 可疑 SQL 页签下,可复制 SQL 文本,根据数据库对 SQL 文本进行筛选,根据执行次数、平均 CPU 时间、平均响应时间、总响应时间和最后执行时间对 SQL 文本进行排序,并查看诊断结果。

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

查看诊断详情:您可查看特定时间内的诊断结果。诊断类型及处理方法等信息如下:
诊断类型 对应参数 索引分析情况 SQL 风险等级 处理方法 执行计划变动且性能下降 ocp.perf.sql-diag.performance-degradation-after-plan-changed-config无 高 需 DBA 确认,可使用 outline 进行执行计划固化,以判断是否为异常 SQL。 全表扫描且无可用索引 ocp.perf.sql-diag.table-scan-index-not-exists-config分析索引 高 建议创建合适的索引。 全表扫描但有索引未执行 ocp.perf.sql-diag.table-scan-index-not-exists-config分析索引 高 需确认数据分布与业务场景。 Hint 未生效 ocp.perf.sql-diag.ineffective-hint-config分析索引 高 需确认 SQL 的 Hint 与实际执行计划是否一致。 性能比下降 ocp.perf.sql-diag.performance-degradation-config无 中 需确认数据分布变化和租户整体队列等待情况等信息。 走索引但性能较低 ocp.perf.sql-diag.awful-performance-index-used-config分析索引 中 需确认数据分布与业务场景。 执行次数突刺 ocp.perf.sql-diag.execution-spike-config无 中 需确认业务量,可能导致整体性能下降。 热点行锁 ocp.perf.sql-diag.row-lock-contention-high-config无 中 需确认业务场景,执行 select for update语句次数超过一定次数,且 CPU 时间超过阈值。CPU 整体占比超过百分比 ocp.perf.sql-diag.cpu-time-proportion-high-config无 低 请确认业务场景、数据分布变化、请求量突涨、执行计划变化等情况。 查看历史趋势:您可选择不同 IP、不同时间段的不同指标查看历史趋势。

查看执行计划:通过选择不同的 IP 和时间区间,查看 Server IP、Plan ID、合并版本、计划生成时间、CPU 时间 和 命中率 。并可对 Server IP 和 Plan ID 进行复制。
单击 Server IP 列的内容,您可查看执行计划详情。
查看索引绑定:用户创建的且包含索引的表中,会显示索引绑定信息。
您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 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 的 计划绑定 来理解。

TopSQL 诊断
TopSQL 是指总计执行时间最长的 SQL 语句,在 OCP 的 租户概览 页面中,您可以根据时间范围、OBServer 对 TopSQL 进行筛选查询,并在 SQL 列表中查看 SQL 详情。
在 OCP 上执行 TopSQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在租户列表中单击具体的租户进入租户概览页面。
在左侧导航栏单击 SQL 诊断 ,进入 TopSQL 页签。
对 TopSQL 进行筛选。
在 时间范围 下拉框中单击 自定义时间 ,选择近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间;并在开始日期和结束日期中选择日期。默认显示全部 OBServer 近 30 分钟内的信息。
在 OBServer 下拉框中选择具体的服务器。
单击 展开 ,可在高级搜索下拉框中对 SQL ID、执行次数、每秒执行次数
等信息进行筛选。

查看 TopSQL 信息。
单击 列管理 ,即可在弹出框中选择需要查看的信息。勾选完成后即可在 TopSQL 列表中查看到相关信息。

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

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

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

查看执行计划:通过选择不同的 IP 和时间区间,查看 Server IP、Plan ID、合并版本、计划生成时间、CPU 时间 和 命中率 。并可对 Server IP 和 Plan ID 进行复制。
单击 Server IP 列的内容,您可查看执行计划详情。
查看索引绑定:您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 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 的 计划绑定 来理解。

SlowSQL 诊断
在进行 SlowSQL 诊断前,您可以根据业务需要设置一般 SQL 语句的执行时间。默认情况下,OCP 上一般 SQL 语句的执行时间为 100 ms,您可以通过黑屏或使用 OceanBase 开发者中心(OceanBase Developer Center,ODC)进行如下操作,修改默认的 SlowSQL 阈值:
select collect_elapsed_threshold_us from ob_agent_collection_config_history
where collection_name = 'slow_sql';
update ob_agent_collection_config_history set collect_elapsed_threshold_us = 10000000 where collection_name = 'slow_sql';
在 OCP 上执行 SlowSQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在租户列表中单击具体的租户进入租户概览页面。
在左侧导航栏单击 SQL 诊断 ,进入 SlowSQL 页签。
对 SlowSQL 进行筛选。
在 时间范围 下拉框中单击 自定义时间 ,选择近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间;并在开始日期和结束日期中选择日期。默认显示全部 OBServer 近 30 分钟内的信息。
在 OBServer 下拉框中选择具体的服务器。
单击 展开 ,可在高级搜索下拉框中对 SQL ID、执行次数、每秒执行次数
等信息进行筛选。

查看 SlowSQL 信息。
单击 列管理 ,即可在弹出框中选择需要查看的信息。勾选完成后即可在 TopSQL 列表中查看到相关信息。

在 SlowSQL 页签下, 可查看在刚刚选择的列信息。可复制 SQL 文本,根据数据库和用户对 SQL 文本进行筛选,根据执行次数、总响应时间、响应时间和 CPU 时间对 SQL 文本进行排序。

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

查看 SQL 执行明细:您可查看近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间内的 TraceID、请求时间、响应时间、执行时间、物理读、返回行数、Server IP、客户端 IP信息。支持复制 TraceID;根据请求时间、响应时间、执行时间、物理读对 SQL 进行排序。
物理读:从物理磁盘中读取数据的次数。

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

查看执行计划:通过选择不同的 IP 和时间区间,查看 Server IP、Plan ID、合并版本、计划生成时间、CPU 时间 和 命中率 。并可对 Server IP 和 Plan ID 进行复制。
单击 Server IP 列的内容,您可查看执行计划详情。
查看索引绑定:您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 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 的 计划绑定 来理解。
OCP 上的 SQL 监控服务主要包括可疑 SQL、TopSQL 以及 SlowSQL 三部分。背景信息
可疑 SQL、TopSQL 以及 SlowSQL 的说明如下:
可疑 SQL:是指根据诊断类型结合 SQL 的语句、执行历史、表结构进行诊断后,符合诊断特征的 SQL。
TopSQL:是指总计执行时间最长的 SQL 语句。
TopSQL 为不同内容的 SQL 按执行效率高低进行排序展示,TopSQL 的查询结果通常可反映出一个 OceanBase 集群、租户或服务器在某段时间内所执行所有不同类型 SQL 的性能差异,通常用它可定位到数据库中性能较差的 SQL。
SlowSQL:是指执行超过一定时间的 SQL,可通过 SlowSQL 诊断识别风险语句,规避风险。
SlowSQL 的查询结果通常可反映出某条 SQL 在不同时间段内的性能变化,通常用它可定位出 SQL 性能变化的原因。
说明
不同 OCP 版本的操作界面可能不同,本节以 OCP V3.1.0 版本为例提供操作指导,OCP 其他版本的操作请参考对应版本的《 OCP 用户指南》文档。
可疑 SQL 诊断
在 OCP 上执行可疑 SQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在租户列表中单击具体的租户进入租户概览页面。
在左侧导航栏单击 SQL 诊断 ,进入 可疑 SQL 页签。
对可疑 SQL 进行筛选。
在 时间范围 下拉框中单击 自定义时间 ,选择近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间;并在开始日期和结束日期中选择日期。默认显示近 30 分钟内的信息。
查看可疑 SQL 信息。
在 可疑 SQL 页签下,可复制 SQL 文本,根据数据库对 SQL 文本进行筛选,根据执行次数、平均 CPU 时间、平均响应时间、总响应时间和最后执行时间对 SQL 文本进行排序,并查看诊断结果。
单击 SQL 文本下内容,您可进入具体 SQL 页面。
您可在SQL 文本区域 复制 或 查看全部 SQL 信息。
查看诊断详情:您可查看特定时间内的诊断结果。诊断类型及处理方法等信息如下:
诊断类型 对应参数 索引分析情况 SQL 风险等级 处理方法 执行计划变动且性能下降 ocp.perf.sql-diag.performance-degradation-after-plan-changed-config无 高 需 DBA 确认,可使用 outline 进行执行计划固化,以判断是否为异常 SQL。 全表扫描且无可用索引 ocp.perf.sql-diag.table-scan-index-not-exists-config分析索引 高 建议创建合适的索引。 全表扫描但有索引未执行 ocp.perf.sql-diag.table-scan-index-not-exists-config分析索引 高 需确认数据分布与业务场景。 Hint 未生效 ocp.perf.sql-diag.ineffective-hint-config分析索引 高 需确认 SQL 的 Hint 与实际执行计划是否一致。 性能比下降 ocp.perf.sql-diag.performance-degradation-config无 中 需确认数据分布变化和租户整体队列等待情况等信息。 走索引但性能较低 ocp.perf.sql-diag.awful-performance-index-used-config分析索引 中 需确认数据分布与业务场景。 执行次数突刺 ocp.perf.sql-diag.execution-spike-config无 中 需确认业务量,可能导致整体性能下降。 热点行锁 ocp.perf.sql-diag.row-lock-contention-high-config无 中 需确认业务场景,执行 select for update语句次数超过一定次数,且 CPU 时间超过阈值。CPU 整体占比超过百分比 ocp.perf.sql-diag.cpu-time-proportion-high-config无 低 请确认业务场景、数据分布变化、请求量突涨、执行计划变化等情况。 查看历史趋势:您可选择不同 IP、不同时间段的不同指标查看历史趋势。
查看执行计划:通过选择不同的 IP 和时间区间,查看 Server IP、Plan ID、合并版本、计划生成时间、CPU 时间 和 命中率 。并可对 Server IP 和 Plan ID 进行复制。
单击 Server IP 列的内容,您可查看执行计划详情。
查看索引绑定:用户创建的且包含索引的表中,会显示索引绑定信息。
您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 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 的 计划绑定 来理解。
TopSQL 诊断
TopSQL 是指总计执行时间最长的 SQL 语句,在 OCP 的 租户概览 页面中,您可以根据时间范围、OBServer 对 TopSQL 进行筛选查询,并在 SQL 列表中查看 SQL 详情。
在 OCP 上执行 TopSQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在租户列表中单击具体的租户进入租户概览页面。
在左侧导航栏单击 SQL 诊断 ,进入 TopSQL 页签。
对 TopSQL 进行筛选。
在 时间范围 下拉框中单击 自定义时间 ,选择近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间;并在开始日期和结束日期中选择日期。默认显示全部 OBServer 近 30 分钟内的信息。
在 OBServer 下拉框中选择具体的服务器。
单击 展开 ,可在高级搜索下拉框中对 SQL ID、执行次数、每秒执行次数
等信息进行筛选。
查看 TopSQL 信息。
单击 列管理 ,即可在弹出框中选择需要查看的信息。勾选完成后即可在 TopSQL 列表中查看到相关信息。
在 TopSQL 页签下, 可查看已配置展示的列。可复制 SQL 文本,根据数据库和用户对 SQL 文本进行筛选,根据执行次数、总响应时间、响应时间和 CPU 时间对 SQL 文本进行排序。
单击 SQL 文本,您可进入具体 SQL 页面。
您可在 SQL 文本 区域 复制 或 查看全部 SQL 信息。
查看历史趋势:您可选择不同 IP、不同时间段的不同指标查看历史趋势。
查看执行计划:通过选择不同的 IP 和时间区间,查看 Server IP、Plan ID、合并版本、计划生成时间、CPU 时间 和 命中率 。并可对 Server IP 和 Plan ID 进行复制。
单击 Server IP 列的内容,您可查看执行计划详情。
查看索引绑定:您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 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 的 计划绑定 来理解。
SlowSQL 诊断
在进行 SlowSQL 诊断前,您可以根据业务需要设置一般 SQL 语句的执行时间。默认情况下,OCP 上一般 SQL 语句的执行时间为 100 ms,您可以通过黑屏或使用 OceanBase 开发者中心(OceanBase Developer Center,ODC)进行如下操作,修改默认的 SlowSQL 阈值:
select collect_elapsed_threshold_us from ob_agent_collection_config_history where collection_name = 'slow_sql'; update ob_agent_collection_config_history set collect_elapsed_threshold_us = 10000000 where collection_name = 'slow_sql';在 OCP 上执行 SlowSQL 诊断的操作步骤如下:
在左导航栏单击 租户 ,并在租户列表中单击具体的租户进入租户概览页面。
在左侧导航栏单击 SQL 诊断 ,进入 SlowSQL 页签。
对 SlowSQL 进行筛选。
在 时间范围 下拉框中单击 自定义时间 ,选择近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间;并在开始日期和结束日期中选择日期。默认显示全部 OBServer 近 30 分钟内的信息。
在 OBServer 下拉框中选择具体的服务器。
单击 展开 ,可在高级搜索下拉框中对 SQL ID、执行次数、每秒执行次数
等信息进行筛选。
查看 SlowSQL 信息。
单击 列管理 ,即可在弹出框中选择需要查看的信息。勾选完成后即可在 TopSQL 列表中查看到相关信息。
在 SlowSQL 页签下, 可查看在刚刚选择的列信息。可复制 SQL 文本,根据数据库和用户对 SQL 文本进行筛选,根据执行次数、总响应时间、响应时间和 CPU 时间对 SQL 文本进行排序。
单击 SQL 文本下内容,您可进入具体 SQL 页面。
您可在 SQL 文本 区域 复制 或 查看全部 SQL 信息。
查看 SQL 执行明细:您可查看近 5 分钟、近 10 分钟、近 20 分钟、近 30 分钟、近 1 小时、近 3小时或自定义时间内的 TraceID、请求时间、响应时间、执行时间、物理读、返回行数、Server IP、客户端 IP信息。支持复制 TraceID;根据请求时间、响应时间、执行时间、物理读对 SQL 进行排序。
物理读:从物理磁盘中读取数据的次数。
查看历史趋势:您可选择不同 IP、不同时间段的不同指标查看历史趋势。
查看执行计划:通过选择不同的 IP 和时间区间,查看 Server IP、Plan ID、合并版本、计划生成时间、CPU 时间 和 命中率 。并可对 Server IP 和 Plan ID 进行复制。
单击 Server IP 列的内容,您可查看执行计划详情。
查看索引绑定:您可根据索引状态和类型对索引进行筛选;也可以单击 未绑定 ,将该 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 的 计划绑定 来理解。
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/




