1、SQL执行计划
拿到一条SQL的时候,首先要下达梦手册中提出的有效SQL规范,及是否命中了特殊OR子句的不规范,是否用了复杂的正则表达式,避免重复很高的索引,UINON ALL 是否可以替换UNION操作等,某些场景INSTR函数导致的NEST LOOP效率等,再就是看下它的预估执行计划。预估执行计划,可以采用达梦客户端点击如下图解小按钮生成,也可以按快捷键F9生成,也可以在SQL前加EXPLAIN生成预估计划。
1.1查看预估的执行计划
通过客户端工具按F9生成:
通过EXPLAIN命令生成:
EXPLAIN select * from emp e where e.EMPLOYEE_ID=3003;
1 #NSET2: [1, 856, 285]
2 #PRJT2: [1, 856, 285]; exp_num(12), is_atom(FALSE)
3 #BLKUP2: [1, 1, 285]; INDEX33555529(E)
4 #SLCT2: [1, 1, 285]; E.EMPLOYEE_ID = 3003
5 #CSCN2: [1, 856, 285]; INDEX33555529(EMP as E); btr_scan(1)
1.2执行计划操作符
操作符的篇章较多,详情参考《DM8系统管理员手册.pdf》中【附录 4 执行计划操作符】章节。常见操作符如:聚集索引扫描(CSCN2),全表扫描(CSCN),索引扫描(SSEK),二次回表(BLKUP),除重(DISTINCT) ,二级索引定位(SSEK2)等等;多表关联如:(HASH链接)HASH JOIN,嵌套循环连接(NEST LOOP JOIN),还有MERGE 链接(MERGE JOIN );大表和大表关联HASH JOIN更优,而如果小表和大表关联,通常是NEST LOOP JOIN会更优,实际情况都是和数据量有关,优化器大部分能选择到合适的操作符,少数情况需要人为干涉。
1.3执行计划含义
以上述执行计划为例:
1 #NSET2: [1, 856, 285]
2 #PRJT2: [1, 856, 285]; exp_num(12), is_atom(FALSE)
3 #BLKUP2: [1, 1, 285]; INDEX33555529(E)
4 #SLCT2: [1, 1, 285]; E.EMPLOYEE_ID = 3003
5 #CSCN2: [1, 856, 285]; INDEX33555529(EMP as E); btr_scan(1)
#NSET2 表示收集结果集的操作符
#PRJT2:投影运算,选择表达式的计算
#BLKUP2:索引名(表名),定位查找
#SLCT2: 查询条件过滤操作符
#CSCN2: [1, 856, 285]
说明:三元组合,3个数字分别表示【估算代价,结果条数,行数据的长度】;
CSCN2: [1, 856, 285]这句含义是:这是一个全表扫描操作,涉及的整体代价估算为1,结果集为856,每行数据长度为285。
1.4执行计划顺序
执行计划可以理解是一个数型状,看懂执行计划顺序,会让我们更好的分析SQL性能问题,SQL的执行顺序,并不是简单的从下而上,解析规律大致如下:
1.缩进越深的越先执行;
2.同样缩进的上面的先执行,下面的后执行;
3.上下的优先级高于内外;
越缩进越先执行,即最终缩进分叉了3,4,同样的缩进,从上由下优先级更高,所以这里的3先执行,3下面又有越深的越先执执行,又有1,2 。
1.5查看历史执行计划
v c a c h e p l n 保存了历史的 S Q L 缓存计划,平常我们在跟踪问题的时候,也可以分析它的历史缓存计划是否是最优,把历史计划生成出来 , 此功能对标 O r a c l e 的 V cachepln保存了历史的SQL缓存计划,平常我们在跟踪问题的时候,也可以分析它的历史缓存计划是否是最优,把历史计划生成出来,此功能对标Oracle的V cachepln保存了历史的SQL缓存计划,平常我们在跟踪问题的时候,也可以分析它的历史缓存计划是否是最优,把历史计划生成出来,此功能对标Oracle的VSQL_PLAN_STATISTICS_ALL只是获取方式有所差异。
SQL> SELECT * FROM LEI.EMP WHERE EMPLOYEE_ID=1001;
行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- ----------- ------------- ------------------ -------------------- ----------- ---------- ------ ----------- -------------- ----------- -------------
1 1001 马学铭 340102196202303000 maxueming@dameng.com 15312348552 2008-05-30 11 30000 0 1001 101
已用时间: 1.447(毫秒). 执行号:3522.
SQL> SELECT * FROM v$cachepln WHERE SQLSTR LIKE '%LEI.EMP%';
行号 CACHE_ITEM TYPE$ HASH_VALUE SCHID USER_ID OBJ_ID RS_CAN_CACHED N_RS_CACHED N_TABLE TABLEID
---------- -------------------- ----- ----------- ----------- ----------- ----------- ------------- ----------- ----------- -------
SQLSTR SQLCACHE DDLSCRIPT RET_CMD
------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------- --------- -----------
STMT_TYPE N_LIT_PARA N_CLNT_PARA N_COLS SEL_UPDATABLE MEM_SIZE RS_CAN_CACHED_IN_RULE BINDED INDEPENDENT
----------- ----------- ----------- ----------- ------------- -------------------- --------------------- ------ -----------
1 140260405528992 SQL -244970637 150994945 50331649 0 N 0 0
SELECT * FROM v$cachepln WHERE SQLSTR LIKE '%LEI.EMP%'; 140260401615656 NULL 160
7 0 0 23 N 121680 N N Y
行号 CACHE_ITEM TYPE$ HASH_VALUE SCHID USER_ID OBJ_ID RS_CAN_CACHED N_RS_CACHED N_TABLE TABLEID
---------- -------------------- ----- ----------- ----------- ----------- ----------- ------------- ----------- ----------- -------
SQLSTR SQLCACHE DDLSCRIPT RET_CMD
------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------- --------- -----------
STMT_TYPE N_LIT_PARA N_CLNT_PARA N_COLS SEL_UPDATABLE MEM_SIZE RS_CAN_CACHED_IN_RULE BINDED INDEPENDENT
----------- ----------- ----------- ----------- ------------- -------------------- --------------------- ------ -----------
2 140260405406944 SQL 769619605 150994945 50331649 0 N 0 1 1046
SELECT * FROM LEI.EMP WHERE EMPLOYEE_ID=1001; 140260404968064 NULL 160
7 0 0 11 Y 121680 Y N Y
行号 CACHE_ITEM TYPE$ HASH_VALUE SCHID USER_ID OBJ_ID RS_CAN_CACHED N_RS_CACHED N_TABLE TABLEID
---------- -------------------- ----- ----------- ----------- ----------- ----------- ------------- ----------- ----------- -------
SQLSTR SQLCACHE DDLSCRIPT RET_CMD
------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------- --------- -----------
STMT_TYPE N_LIT_PARA N_CLNT_PARA N_COLS SEL_UPDATABLE MEM_SIZE RS_CAN_CACHED_IN_RULE BINDED INDEPENDENT
----------- ----------- ----------- ----------- ------------- -------------------- --------------------- ------ -----------
3 140260383469760 SQL -814522165 150994945 50331649 0 N 0 0
/***Manager***/select IDENT_SEED('LEI.EMP'),IDENT_INCR('LEI.EMP'),IDENT_CURRENT('LEI.EMP'),NAME from SYSCOLUMNS where ID = 1046 and INFO2 & 0x01 = 0x01 140260383527312 NULL 160
7 0 0 4 N 56444 N N Y
行号 CACHE_ITEM TYPE$ HASH_VALUE SCHID USER_ID OBJ_ID RS_CAN_CACHED N_RS_CACHED N_TABLE TABLEID
---------- -------------------- ----- ----------- ----------- ----------- ----------- ------------- ----------- ----------- -------
SQLSTR SQLCACHE DDLSCRIPT RET_CMD
------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------- --------- -----------
STMT_TYPE N_LIT_PARA N_CLNT_PARA N_COLS SEL_UPDATABLE MEM_SIZE RS_CAN_CACHED_IN_RULE BINDED INDEPENDENT
----------- ----------- ----------- ----------- ------------- -------------------- --------------------- ------ -----------
4 140260378646512 SQL -155128631 150994945 50331649 0 N 0 0
/***Manager***/select IDENT_SEED('LEI.EMP'),IDENT_INCR('LEI.EMP'),IDENT_CURRENT('LEI.EMP'),NAME from SYSCOLUMNS where ID = 1044 and INFO2 & 0x01 = 0x01 140260376122256 NULL 160
7 0 0 4 N 56444 N N Y
已用时间: 1.090(毫秒). 执行号:3523.
SQL> alter session set events 'immediate trace name plndump level 140260405406944, dump_file ''/home/dmdba/140260405406944.log''';
操作已执行
已用时间: 3.958(毫秒). 执行号:3524.
SQL> host cat /home/dmdba/140260405406944.log
DM Database Server x64 V8
*** 2024-09-29 15:00:56.587000000*** start dump the infos of pln[140260405406944].
npln cache infos:
scp cache
type: 0
over flow: 0
disable: 0
fixed number: 1
ts value: 9892
type: 0
hash val: 769619605
schid: 150994945
user id: 50331649
obj id: 0
--rs cache
rs can cache: 0
rs cache size: 0
talbes' size: 1
PLN_CREATE_TIME: 2024-09-29 14:59:30.000
SQL_STR:
SELECT * FROM LEI.EMP WHERE EMPLOYEE_ID=1001;
PLN_CMD:
0 savepoint
6 dop_try_begin 0
10 dop_try_begin 1
14 sql 0 0
24 nop
26 jmp 67
32 nop
34 push 0
40 swap
42 sloc 1
46 err_set 0
50 rollback
56 jmp 67
62 nop
64 throw dir 1
67 exception end
69 savepoint
75 cop "b 0"
80 hlt 104
82 hlt 44201
sqlnode[0]::::
1 #NSET2: [22, 16383, 285]
2 #PRJT2: [22, 16383, 285]; exp_num(12), is_atom(FALSE)
3 #BLKUP2: [22, 16383, 285]; IDX_EMP_EMPLOYEEID(EMP)
4 #SSEK2: [22, 16383, 285]; scan_type(ASC), IDX_EMP_EMPLOYEEID(EMP), is_global(0), scan_range[1001,1001]
end dump the infos of pln[140260405406944].
2、性能优化“三板斧”
达梦数据库优化“三板斧”,在实践中发现可以排除大部分的性能问题,达梦数据库优化“三板斧”主要三个方面(统计信息收集,合理的索引建立,DM.ini参数的优化),在使用三板斧过程中,首先要预检查下SQL,以及SQL编写的初级错误问题,例如:OR语句,困难正则表达式,未加过滤条件,笛卡尔,隐式转换,简单先过一遍。
在实际过程中,大部分SQL优化可以通过收集统计信息,索引新增,索引调整,达梦DM.INI参数调整等得到优化处理,而进阶一些的比较难分析的,就涉及到了增加HINT,SQL改写,在处理过程中,都需要根据具体SQL来判断,常见的有关联临时表查询,层次查询等容易需要Hint辅助,文章中给出浅显的例子来说明,实际优化过程中,还是需要不断的去实践,根据不同的SQL,分析执行计划,积累更加丰富的经验。
2.1统计信息
2.1.1查看统计信息收集情况
SQL> SELECT NUM_ROWS,LAST_ANALYZED,TEMPORARY FROM USER_TABLES WHERE TABLE_NAME='EMP';
行号 NUM_ROWS LAST_ANALYZED TEMPORARY
---------- -------- ------------- ---------
1 NULL NULL N
已用时间: 4.976(毫秒). 执行号:2701.
NUM_ROWS:如果是空代表未收集统计信息
LAST_ANALYZED:代表收集的时间,如果没有收集这个字段也是空
TEMPORARY:N表示不是临时表,Y表示是临时表,通常如果TEMPORARY=Y 是不用收集的。
2.1.2统计信息收集
2.1.2.1图形界面收集统计信息
2.1.2.2命令行收集统计信息
SQL> BEGIN
2 DBMS_STATS.GATHER_TABLE_STATS('LEI','EMP',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
3 END;
4 /
DMSQL 过程已成功完成
已用时间: 78.618(毫秒). 执行号:2702.
第一个参数:USER是所属用户,如果你要指定其它用户,单独填写,默认USER是当前用户下的表;
第二个参数:所要收集的表;
第三个参数:一般不是分区表名填写NULL即可,默认也是 NULL,区分大小写;
第四个参数:采样百分比,收集的百分比,范围为 0.000001~100,默认系统自定;
第五个参数:TRUE,保留参数,是否使用随机块代替随机行,默认填写TRUE即可。
第六个参数:控制列的统计信息集合和直方图的创建的格式默认填写FOR ALL COLUMNS SIZE AUTO即可,表示所有列收集。
2.1.3检查确认统计信息收集情况
SQL> SELECT NUM_ROWS,LAST_ANALYZED,TEMPORARY FROM USER_TABLES WHERE TABLE_NAME='EMP';
行号 NUM_ROWS LAST_ANALYZED TEMPORARY
---------- -------- ------------- ---------
1 856 2024-09-29 N
已用时间: 4.955(毫秒). 执行号:2703.
2.2创建索引
合理的索引建立(过多的索引会导致插入的性能下降,需要根据实际业务情况合理的建立索引)有助于性能的提升。
SQL> select count(*) from emp;
行号 COUNT(*)
---------- --------------------
1 14024704
已用时间: 0.242(毫秒). 执行号:3201.
SQL> desc emp;
行号 NAME TYPE$ NULLABLE
---------- -------------- ----------- --------
1 EMPLOYEE_ID INTEGER Y
2 EMPLOYEE_NAME VARCHAR(20) Y
3 IDENTITY_CARD VARCHAR(18) Y
4 EMAIL VARCHAR(50) N
5 PHONE_NUM VARCHAR(20) Y
6 HIRE_DATE DATE N
7 JOB_ID VARCHAR(10) N
8 SALARY INTEGER Y
9 COMMISSION_PCT INTEGER Y
10 MANAGER_ID INTEGER Y
11 DEPARTMENT_ID INTEGER Y
11 rows got
已用时间: 1.111(毫秒). 执行号:3202.
SQL> select * from emp where EMPLOYEE_ID=1001;
行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- ----------- ------------- ------------------ -------------------- ----------- ---------- ------ ----------- -------------- ----------- -------------
1 1001 马学铭 340102196202303000 maxueming@dameng.com 15312348552 2008-05-30 11 30000 0 1001 101
已用时间: 00:00:01.938. 执行号:3203.
EMP表记录数1400W+,employee_id列数据唯一,查询employ_id=1001耗时1.9秒。
SQL> show parameter monitor
行号 PARA_NAME PARA_VALUE
---------- ---------------------- ----------
1 MONITOR_MODIFICATIONS 0
2 MONITOR_INDEX_FLAG 0
3 ENABLE_MONITOR 1
4 MONITOR_SQL_EXEC 0
5 ENABLE_MONITOR_DMSQL 1
6 ENABLE_MONITOR_BP 1
7 DSC_ENABLE_MONITOR 1
8 MONITOR_SQL_PARSE 0
9 ENABLE_MONITOR_PLNHIST 0
SQL> alter session set 'MONITOR_SQL_EXEC'=1;
DMSQL 过程已成功完成
已用时间: 0.460(毫秒). 执行号:3205.
SQL> set autotrace on;
SQL> select * from emp where EMPLOYEE_ID=1001;
0 | CSCN2 | EMP | INDEX33555529 | 1
已用时间:1.938(秒). 执行号:0.
查看执行计划为全表扫描。
SQL> create index idx_emp_employeeid on emp(employee_id);
操作已执行
已用时间: 00:00:08.155. 执行号:3207.
SQL> DBMS_STATS.GATHER_INDEX_STATS('LEI','IDX_EMP_EMPLOYEEID');
DMSQL 过程已成功完成
已用时间: 486.269(毫秒). 执行号:3208.
SQL> select * from emp where EMPLOYEE_ID=1001;
0 | ASC | EMP | IDX_EMP_EMPLOYEEID
已用时间: 0.597(毫秒). 执行号:0.
创建索引并收集统计信息后,执行计划走索引,耗时0.6ms。
这是一个非常简单的单表过滤SQL语句,主要用例子来说明,不加索引和加索引的查询速度对比,在数据量越大的时候,差别就越大。侧面也可以看到统计信息,全表扫描和二级索引扫描的结果集相差比较大。
2.3DM.INI参数优化
1.相关文件路径设置参数(控制文件,备份文件,系统文件,临时文件等);
2.实例名
3.内存池以及缓存池
4.线程相关参数
5.查询INI优化类参数(这块跟我们产品特性有比较大关系);
6.检查点参数
7.IO优化参数
8.数据库设置类参数
9.兼容类参数(比如兼容Oracle等)
10.REDO相关参数
11.事务相关参数
12.监控参数
13…
达梦数据库参数配置需要考虑如下因素进行:
1.受机器硬件配置影响(CPU,内存根据需要设置);
2.受需要适配的产品影响(以产品和项目实际使用规模等情况为导向来设置,比如大型ERP产品,基础表比较多,字典缓冲区就要调整到合理值,避免设置过小,频繁被淘汰刷新,又例如看整个产品你的SQL分类,HASH类的SQL过多,则需要HJ_BUF_GLOBAL_SIZE ,HJ_BLK_SIZE合理设置,层次查询过多,则需要设置合理的CNNTB_OPT_FLAG;
3.受目标环境影响(生产环境,测试环境);
4.受适配源端数据库影响等。
达梦数据库dm.ini参数文件相关参数参照《DM8系统管理员手册》中【2.1.1.1 dm.ini】章节。
3、ET工具使用
ET是达梦数据库自带的SQL 性能分析工具,能统计执行计划中,每个操作符的时间花费(将代价显示为具体的时间),从而定位到有性能问题的操作,指导我们去优化。ET是默认关闭的,因此在使用ET之前,需要先开启。
3.1开启ET
SQL> SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
DMSQL 过程已成功完成
已用时间: 7.018(毫秒). 执行号:3517.
SQL> SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);
DMSQL 过程已成功完成
已用时间: 5.094(毫秒). 执行号:3518.
3.2查看ET状态
SQL> select * from v$parameter t where NAME = 'MONITOR_SQL_EXEC';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- ---------------- ------- ----- --------- ---------- ------------------------------------- ------------- -----------
1 577 MONITOR_SQL_EXEC SESSION 1 1 1 Whether to enable monitor sql execute 0 0
已用时间: 4.777(毫秒). 执行号:3519.
SQL> select * from v$parameter t where NAME = 'ENABLE_MONITOR';
行号 ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION DEFAULT_VALUE ISDEFAULT
---------- ----------- -------------- ---- ----- --------- ---------- ------------------------- ------------- -----------
1 574 ENABLE_MONITOR SYS 1 1 1 Whether to enable monitor 1 1
已用时间: 3.262(毫秒). 执行号:3520.
–ENABLE_MONITOR,动态参数(系统级)
–MONITOR_SQL_EXEC,动态参数(会话级)
注意:ET会对数据库性能有影响,使用完后记得关闭以保证数据库性能不受影响。
3.3ET查看
3.4关闭ET
SQL> SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',0);
DMSQL 过程已成功完成
已用时间: 7.262(毫秒). 执行号:3513.
SQL> SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',0);
DMSQL 过程已成功完成
4、 DBMS_SQLTUNE.REPORT_SQL_MONITOR使用
4.1DBMS_SQLTUNE包介绍
DBMS_SQLTUNE系统包兼容Oracle的DBMS_SQLTUNE包的部分功能,提供一系列对实时SQL监控的方法。DBMS_SQLTUNE 包可以实时监控 SQL 执行过程中的信息,包括:执行时间、执行代价、执行用户、统计信息、生成调优建议等功能。
4.2DBMS_SQLTUNE包使用
4.2.1调用系统过程创建系统包
SQL> SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_SQLTUNE');
DMSQL 过程已成功完成
已用时间: 51.092(毫秒). 执行号:2302
4.2.2开启SQL监控参数
SQL> SP_SET_PARA_VALUE (1,'ENABLE_MONITOR',1);
DMSQL 过程已成功完成
已用时间: 6.267(毫秒). 执行号:2303.
SQL> SP_SET_PARA_VALUE (1,'MONITOR_SQL_EXEC',1);
DMSQL 过程已成功完成
已用时间: 6.298(毫秒). 执行号:2304.
SQL> select para_name,para_value from v$dm_ini where para_name in('ENABLE_MONITOR','MONITOR_SQL_EXEC');
行号 PARA_NAME PARA_VALUE
---------- ---------------- ----------
1 ENABLE_MONITOR 1
2 MONITOR_SQL_EXEC 1
已用时间: 3.154(毫秒). 执行号:2305.
4.3调优测试
4.3.1准备测试数据
SQL> CREATE TABLE T (ID INT,NAME VARCHAR(20));
操作已执行
已用时间: 1.800(毫秒). 执行号:2326.
SQL> INSERT INTO T SELECT LEVEL,'TEST' ||LEVEL FROM DUAL CONNECT BY LEVEL <=10000;
影响行数 10000
已用时间: 2.573(毫秒). 执行号:2327.
SQL> COMMIT;
操作已执行
已用时间: 0.931(毫秒). 执行号:2328.
SQL> select count(*) from t;
行号 COUNT(*)
---------- --------------------
1 10000
已用时间: 0.597(毫秒). 执行号:2329.
4.3.2执行SQL查询
SQL> select id,name from t;
...
行号 ID NAME
---------- ----------- --------
9989 9989 TEST9989
9990 9990 TEST9990
9991 9991 TEST9991
9992 9992 TEST9992
9993 9993 TEST9993
9994 9994 TEST9994
9995 9995 TEST9995
9996 9996 TEST9996
9997 9997 TEST9997
9998 9998 TEST9998
9999 9999 TEST9999
行号 ID NAME
---------- ----------- ---------
10000 10000 TEST10000
10000 rows got
已用时间: 0.623(毫秒). 执行号:2771.
4.3.3查询SQL监控报告
SQL> set long 10000
SQL> SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID=>3101) FROM DUAL;
由于T表为创建索引,执行计划走了全表扫描。
4.3.4创建调优任务
SQL> DBMS_SQLTUNE.CREATE_TUNING_TASK('SELECT id,name FROM t',TASK_NAME=>'TEST_SQLTUNE');
DMSQL 过程已成功完成
已用时间: 2.678(毫秒). 执行号:3105.
4.3.5执行调优任务
SQL> DBMS_SQLTUNE.EXECUTE_TUNING_TASK('T_SQLTUNE');
DMSQL 过程已成功完成
已用时间: 2.003(毫秒). 执行号:3107.
4.3.6生成调优报告
SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('T_SQLTUNE');
4.3.7执行调优建议
SQL> CREATE INDEX IDX$$TASK2_EXEC1_1 ON "SYSDBA"."T"("ID");
操作已执行
已用时间: 14.435(毫秒). 执行号:3109.
4.3.8再次生成调优报告
SQL> CALL DBMS_STATS.GATHER_TABLE_STATS('SYSDBA', 'T');
DMSQL 过程已成功完成
已用时间: 25.252(毫秒). 执行号:3119.
SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('T_SQLTUNE');
行号 DBMS_SQLTUNE.REPORT_TUNING_TASK('T_SQLTUNE')
---------- -------------------------------------------------------------------------------------------------------------------------------------
1 GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
TUNING TASK NAME : T_SQLTUNE
TUNING TASK OWNER : SYSDBA
WORKLOAD TYPE : SINGLE SQL STATEMENT
EXECUTION COUNT : 1
CURRENT EXECUTION : SYSEXECNAME_1
EXECUTION TYPE : TUNE SQL
SCOPE : COMPREHENSIVE
TIME LIMIT(SECONDS) : 1800
COMPLETION STATUS : COMPLETED
STARTED AT : 2024-10-13 13:02:00
COMPLETED AT : 2024-10-13 13:02:00
SQL TEXT : SELECT id,name FROM t
执行完成后,该SQL已经达到优化效果。
4.3.9关闭调优任务
SQL> DBMS_SQLTUNE.DROP_TUNING_TASK('T_SQLTUNE');
DMSQL 过程已成功完成
已用时间: 2.334(毫秒). 执行号:3122.
DBMS_SQLTUNE包当表从未收集过统计信息情况,自动给出收集统计信息语句,当表无任务索引情况,自动生成索引的创建语句,根据实际情况选择索引创建。
更多内容请参考:https://eco.dameng.com