ET工具快速上手:从入门到精通的使用步骤


1 前言

ET工具是DM数据库内置的 SQL 性能分析工具,具备统计 SQL 语句执行过程中各操作符实际开销之功能,为 SQL 优化提供依据及指导。该工具能够协助数据库管理员与开发人员深入理解 SQL 语句的执行细节,识别性能瓶颈,并据此采取相应的优化措施。利用 ET 工具,用户能够清晰地观察到 SQL 语句中各操作符的执行时间、CPU 使用率、内存消耗等关键性能指标,这些数据对于精确地定位性能问题极为关键。

2 使用示例

默认情况下,不启用ET功能。另外新版只需调整MONITOR_SQL_EXEC参数即可。

注意:

ET功能的开启将对数据库整体性能造成一定影响,优化工作结束后尽量关闭该功能以提升数据库整体运行效率;DM 数据库新版本的开启 ET 功能时需要设置: ENABLE_MONITOR = 1(默认打开) MONITOR_TIME = 1(默认打开) MONITOR_SQL_EXEC = 1(设置成 1)。
部分 DM 数据库版本的开启方式可能存在一定区别,详细内容请参照安装目录 /doc 下《系统管理员手册》。

select
    para_name,
    para_value,
    para_type
from
    v$dm_ini
where
    para_name in ('ENABLE_MONITOR', 'MONITOR_TIME', 'MONITOR_SQL_EXEC');

SQL> select
2       para_name,
3       para_value,
4       para_type
5   from
6       v$dm_ini
7   where
8       para_name in ('ENABLE_MONITOR', 'MONITOR_TIME', 'MONITOR_SQL_EXEC');

行号     PARA_NAME        PARA_VALUE PARA_TYPE
---------- ---------------- ---------- ---------
1          ENABLE_MONITOR   1          SYS
2          MONITOR_SQL_EXEC 0          SESSION

已用时间: 14.809(毫秒). 执行号:3779601.
SQL>

使用SP_SET_PARA_VALUE开启参数

SQL> SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);
DMSQL 过程已成功完成
已用时间: 26.344(毫秒). 执行号:3779602.
SQL>
SQL>
SQL> select
2       para_name,
3       para_value,
4       para_type
5   from
6       v$dm_ini
7   where
8       para_name in ('ENABLE_MONITOR', 'MONITOR_TIME', 'MONITOR_SQL_EXEC');

行号     PARA_NAME        PARA_VALUE PARA_TYPE
---------- ---------------- ---------- ---------
1          ENABLE_MONITOR   1          SYS
2          MONITOR_SQL_EXEC 1          SESSION

已用时间: 11.808(毫秒). 执行号:3779603.
SQL>

在使用et之前,必须先执行一次SQL,拿到执行号:183004

SQL> SET AUTOTRACE TRACE
SQL> select * from v$dm_ini where PARA_NAME='MONITOR_SQL_EXEC';

行号     PARA_NAME        PARA_VALUE MIN_VALUE MAX_VALUE DEFAULT_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION                           PARA_TYPE SYNC_FLAG SYNC_LEVEL PARA_MODULE
---------- ---------------- ---------- --------- --------- ------------- ------- ---------- ---------- ------------------------------------- --------- --------- ---------- -----------
1          MONITOR_SQL_EXEC 1          0         2         0             N       1          1          Whether to enable monitor sql execute SESSION   ALL_SYNC  CAN_SYNC   monitor


1   #NSET2: [1, 25->1, 624]
2     #PRJT2: [1, 25->1, 624]; exp_num(13), is_atom(FALSE)
3       #SLCT2: [1, 25->1, 624]; V$DM_INI.PARA_NAME = 'MONITOR_SQL_EXEC'
4         #DSCN: [1, 1014->807, 624]; SYSINDEXV$DM_INI(V$DM_INI)

Statistics
-----------------------------------------------------------------
        0           data pages changed
        0           undo pages changed
        150         logical reads
        0           physical reads
        0           redo size
        1147        bytes sent to client
        123         bytes received from client
        1           roundtrips to/from client
        0           sorts (memory)
        0           sorts (disk)
        0           rows processed
        0           io wait time(ms)
        24          exec time(ms)


已用时间: 24.724(毫秒). 执行号:3779606.
SQL>

上面执行号为3779606

SQL> et(183004);
SQL> et(3779606);

行号     OP    TIME(US)             PERCENT RANK                 SEQ         N_ENTER     MEM_USED(KB)         DISK_USED(KB)        HASH_USED_CELLS      HASH_CONFLICT        DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- -------------------- -------------------- -------------------- ----------------- --------------- --------------------
1          PRJT2 10                   0.04%   4                    2           4           0                    0                    0                    0                    NULL              NULL            0
2          SLCT2 61                   0.25%   3                    3           6           0                    0                    0                    0                    NULL              NULL            0
3          NSET2 150                  0.62%   2                    1           3           0                    0                    0                    0                    NULL              NULL            0
4          DSCN  23802                99.08%  1                    4           4           0                    0                    0                    0                    NULL              NULL            0



Statistics
-----------------------------------------------------------------
        0           data pages changed
        0           undo pages changed
        333         logical reads
        0           physical reads
        0           redo size
        1627        bytes sent to client
        77          bytes received from client
        1           roundtrips to/from client
        2           sorts (memory)
        0           sorts (disk)
        1           rows processed
        0           io wait time(ms)
        53          exec time(ms)


已用时间: 53.943(毫秒). 执行号:3779608.
SQL>

ET结果中每一行对应一个操作符,每一列对应的解释如下:

OP : 操作符名称

TIME(US) : 执行耗时,以微秒为单位


PERCENT RANK : 在整个计划中用时占比

SEQ : 计划中的序号

N_ENTER :操作符进入的次数

–随着版本变化参数也在不断增加

MEM_USED(KB) :表示 SQL 语句在执行过程中使用的内存大小,单位为千字节(KB)。

DISK_USED(KB):代表 SQL 操作在执行过程中使用磁盘空间的大小,单位为千字节(KB)。

HASH_USED_CELLS:在哈希操作(如哈希连接、哈希聚合等)中,该指标表示被使用的哈希桶(cells)的数量。

HASH_CONFLICT :在哈希操作中,当不同的数据元素被映射到同一个哈希桶时就会发生哈希冲突。

DHASH3_USED_CELLS:特定类型(比如某种深度哈希或者三阶段哈希操作)下被使用的哈希桶数量。

DHASH3_CONFLICT :与 HASH_CONFLICT 类似,不过是针对 DHASH3 这种特定哈希操作所记录的冲突次数。

HASH_SAME_VALUE :表示在哈希操作中遇到相同哈希值的元素数量。

然后就可以与执行计划对应起来看了。

3 普通用户查看 ET 功能

只需将权限授权给普通用户即可,如下所示:

grant EXECUTE on "SYS"."ET" to T1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太行山有西瓜汁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值