全部产品
Search
文档中心

云数据库 OceanBase:执行分析

更新时间:Aug 07, 2024

背景信息

ODC SQL 窗口提供了用于处理数据的用户界面。在 SQL 窗口中,您可以对 SQL 语句进行系统评估、执行详情和执行的全链路耗时信息。

本文档以表 employee 为例,介绍如何对查询 SQL 语句进行系统评估。

执行计划

  1. 在 SQL 窗口中,编辑 SQL 语句以查询插入表employee的数据。

    image.png

    SELECT `emp_no`, `birthday`, `name`, `time`, `test_col`, `status`, `age`, `state` FROM `employee`;
  2. 如上图所示,选中 SQL 语句并单击执行计划图标,可以在执行 SQL 语句前系统预估执行数据(EXPLAINPLAN 操作的结果),展示的执行数据可能与实际执行语句后的数据略有不同。

    image.png

  3. 计划详情 页面中,单击 文本视图 切换至格式化展示页面。

执行详情

说明
  • 对于 OceanBase V4.2.4 之前的版本,执行 SQL 语句时,您可以通过结果集页签中 执行详情 查看 SQL 执行的基本信息、耗时统计、I/O 统计、执行的 SQL 语句、计划统计和大纲。

    image

  • 对于 OceanBase V4.2.4 及之后 OceanBase V4.3.0 之前的版本或者 OceanBase V4.3.3 之后的版本,您在执行查询/插入/更新/删除/检索数据库中的数据时,您可以通过 执行画像 实时查询 SQL 执行的执行剖析,通过执行剖析可以快速查询 SQL 执行详情和识别性能瓶颈。

执行画像入口

  • 入口一:在 SQL 窗口执行 SQL 语句时,执行过程中可以在 日志 页签单击 查看执行画像

    重要

    如果 SQL 语句的执行耗时低于 1 秒,日志页签中可能不会展示执行画像入口。

    image

  • 入口二:SQL 语句执行完成后,可以在执行结果中单击执行画像图标。

    image

  • 入口三:SQL 语句执行完成后,单击 执行记录 页签中的 TRACE ID 可进入执行画像界面。

    image

执行剖析

执行详情 即执行画像是对 SQL 执行计划的可视化和数据采集,支持实时查看算子执行状态、耗时详情、I/O 和运行时数据,并对全局执行耗时进行汇总和排序。

image

通过执行画像,您可以:

  • 以图格式查看 OceanBase 的实际执行计划,更方便理解算子执行顺序和连接关系。

  • 通过执行概览、实时 I/O 统计和耗时 Top5 快速进行执行瓶颈识别,ODC 根据 CPU time 进行耗时排序。

  • 实时查询算子的执行状态、时间和吐行行数,通过单击算子节点,您可以在右侧获取到算子属性、耗时详情,以及 I/O 及其它运行时数据。

    image

  • 支持分析单机执行计划和分析分布式执行计划,并行执行算子支持按照 DB 耗时、IO 内存和吐行行数排序,快速定位数据倾斜。

SQL 执行概览

类型

参数说明

SQL 执行概览

image

  • CPU time:所有算子的 CPU 耗时之和。

  • I/O wait time:所有算子的 IO 等待时间之和。

  • DB time:计划执行消耗时间。

  • Queue time:请求在队列的等待时间。

  • Plan type:表示执行计划类型为本地(LOCAL)、远程(REMOTE)或分布式(DISTRIBUTED)。

  • Is hit plan cache:是否命中计划缓存。

算子执行概览

image

  • CPU time:当前算子 CPU 消耗总时间,并行算子的该项为所有子线程的耗时汇总。

  • I/O wait time:当前算子的 IO 等待时间,包括磁盘IO和网络等时间,并行算子的该项为所有子线程的耗时汇总。

  • Parallel:并行度,即当前算子实际共有多少线程并行。

  • Skewness:偏斜度,该值越高表明子线程中吐行耗时差距越大,可能有某个执行节点或线程拖慢了整个算子。

  • Process name:线程号,可以根据该值找到对应节点的 IP 和端口。

  • Change time:当前线程的吐行耗时,即吐出第一行数据和最后一行数据之间的时间差。

I/O 统计

类型

参数说明

算子 I/O 统计

  • Output rows:吐行行数。

  • Start times:算子被 rescan 的次数,例如 Nested loop join 算子的右子节点会被扫描多次。

  • Max memory:算子运行时占用的 workarea 内存上限。

  • Max disk:算子运行时占用的最大磁盘 dump 空间。

节点属性

节点属性由算子的输出信息和运行时数据(Other statistics)构成。

更多节点输出信息,请参见 OceanBase 官网文档,例如Table Scan 算子的属性

运行时数据在不同算子上表示不同的意义,是一些重要的监控指标。关于此类指标,请参见 V$SQL_MONITOR_STATNAME 视图。

执行计划

与 SQL 窗口中的 执行计划 不同,执行画像 中的执行计划展示的是实际执行的计划,因此包含 实际行 实际代价。ODC 通过 DBMS_XPLAN 工具包获取当前计划。

image

您也可以单击右上角的 文本视图 切换视图,查询更全面的计划信息,便于进行更进一步的 SQL 调优。

image

全链路诊断

当 OceanBase 版本高于 4.2.0 时(如需通过 OBProxy 连接,版本应为 OBProxy V4.2.0 及之后),ODC 支持查看 SQL 的全链路诊断可视化信息。更多请参见OceanBase 全链路追踪概述

ODC 对于 OceanBase 的全链路诊断数据,提供了 Trace 视图 列表视图 两种可视化视图。

Trace 视图展示了 SQL 执行的总时间线,支持节点的展开和收起,且支持搜索高亮。将鼠标置于时间线上,可以查看当前节点的执行节点、开始、结束时间,以及详细数据。

image

单击表格视图image可以切换视图,允许对 Span 进行各维度的筛选和排序。

image

ODC 支持导出 JSON 格式的全链路诊断数据,兼容 OpenTracing 协议,您可以将其导入 Jaeger 中进行进一步分析。

DB 耗时

image.png

执行记录 页签中,可将鼠标箭头放置在 DB 耗时 信息后的提示图标上,弹出的提示信息中可查看对 SQL 执行的全链路耗时信息,以验证各个阶段的耗时与实际是否相符。

相关文档