注册
达梦如何获取10053事件信息
专栏/技术分享/ 文章详情 /

达梦如何获取10053事件信息

Paige 2026/03/06 82 0 0
摘要

背景说明

10053事件是达梦数据库中用于追踪SQL优化器内部决策机制的重要工具。通过启用10053事件,可以获取SQL语句在优化器生成执行计划过程中的详细信息,包括单表访问路径的代价评估、多表连接顺序和连接方法的代价计算等。

实操示例

以下是一个完整的示例,展示如何收集10053事件的跟踪信息。

步骤一:查询TRACE_PATH路径

在启用10053事件之前,首先需要确定生成的跟踪文件将被保存在哪个目录中。可以通过以下SQL语句查询TRACE_PATH参数的值:

select * from v$dm_ini where para_name = 'TRACE_PATH';

该命令将返回当前数据库的跟踪文件存储路径,例如 /opt/dmdbms/data/trace。

步骤二:开启10053事件

在会话中启用10053事件,并设置适当的level值。level参数用于控制跟踪信息的详细程度,通常设置为1或2。

alter session set events '10053 trace name context forever,level 2';

level 1:记录基本的优化器信息。
level 2:记录更详细的优化器信息,包括代价计算和访问路径选择。

步骤三:执行目标SQL语句

在10053事件开启后,执行你想要分析的SQL语句。例如:

select * from T11 left join T12 on T11.ID = T12.ID;

该SQL语句将触发优化器生成执行计划,并在跟踪文件中记录详细的优化过程。

##步骤四:关闭10053事件

在SQL语句执行完成后,关闭10053事件以停止跟踪:

alter session set events '10053 trace name context off';

步骤五:查看生成的跟踪文件

生成的跟踪文件位于TRACE_PATH指定的目录下,文件名格式为 DMSERVER_月日_时分_session_id.trc。例如:
DMSERVER_1223_1430_1303.trc
你可以使用文本编辑器打开该文件,查看优化器生成执行计划的详细过程。

跟踪文件内容示例

以下是一个跟踪文件的片段,展示了优化器在生成执行计划时的详细信息:

*** Plan before optimized:
project[0x7f85483727e0]  (0);
select[0x7f85483721b0]  (1); (TB1.NAME = '张三')
    base table[0x7f8548371b28] (TB1, FULL SEARCH) (0);

<<<<< selectivity estimate of table TB1 >>>>>
*** stdesc 1: column = NAME, scan_type = EQU, key = ('张三')
stat_info(33555468,0,'I')= {
                          #Valid = 'Y',
                          #Type  = 'Freq',
                          #Card  = 1000000,
                          #NDV   = 2,
                          #Nulls = 0,
                          #LP    = 2725,
                          #LVLS  = 2,
                          #CLUF  = 0,
                          #NK    = 0,
                          #NS    = 1000000}
 ---> st = 0.00000

>>>>> total: 1000000, estimate match rows: 1, st: 0.00000; -- st_other: 1.000, n_stdesc: 1

---------------- single table access path probe for TB1 ----------------
*** path 1: INDEX33555466 (FULL search), cost: 128.46251
*** path 2: INDEX33555467 (FULL search), cost: 1028.76071
*** path 3: IDX_NAME (EQU search), cost: 0.06525

>>> best access path: IDX_NAME (EQU search), cost: 0.06525

*** BEST PLAN FOR THIS STATEMENT ***
project[0x7f8548389b98]  (cost: 0.06525, rows: 1);
base table[0x7f854838a828] (TB1, IDX_NAME, EQU SEARCH) (cost: 0.06525, rows: 1);


2025Q2版本新增功能:通过视图查看跟踪信息

在达梦数据库2025Q2版本中,支持将10053事件的跟踪信息记录到系统视图v$trace_info中,无需手动查看文件。操作步骤如下:

-- 1. 开启10053事件并设置为DYNAMIC模式
alter session set events '10053 trace name context DYNAMIC, level 2';

-- 2. 执行SQL语句
select * from T11 left join T12 on T11.ID = T12.ID;

-- 3. 关闭10053事件
alter session set events '10053 trace name context off';

-- 4. 查询v$trace_info视图
select * from v$trace_info;

总结

通过以上步骤,你可以成功收集并分析10053事件的跟踪信息。该事件特别适用于需要深入了解SQL优化器行为的场景,例如SQL性能调优和执行计划分析。在2025Q2版本中,通过v$trace_info视图可以更方便地查看跟踪信息,无需上服务器手动查找和解析.trc文件。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服