达梦数据库性能优化

devtools/2024/10/20 3:53:05/

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缓存计划,平常我们在跟踪问题的时候,也可以分析它的历史缓存计划是否是最优,把历史计划生成出来,此功能对标OracleVSQL_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      1607           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           1046SELECT * FROM LEI.EMP WHERE EMPLOYEE_ID=1001;                                                                                                           140260404968064      NULL      1607           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      1607           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      1607           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 cachetype: 0over flow: 0disable: 0fixed number: 1ts value: 9892type: 0hash val: 769619605schid: 150994945user id: 50331649obj id: 0--rs cachers can cache: 0rs cache size: 0talbes' size: 1
PLN_CREATE_TIME: 2024-09-29 14:59:30.000SQL_STR:
SELECT * FROM LEI.EMP WHERE EMPLOYEE_ID=1001;PLN_CMD:0       savepoint 6       dop_try_begin   010      dop_try_begin   114      sql 0 024      nop26      jmp     6732      nop34      push    040      swap42      sloc    146      err_set 050      rollback56      jmp     6762      nop64      throw dir       167      exception end69      savepoint 75      cop "b 0"80      hlt 10482      hlt 44201sqlnode[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     Y11 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       TEST1000010000 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


http://www.ppmy.cn/devtools/127186.html

相关文章

【如何获取股票数据10】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时KDJ数据获取实例演示及接口API说明文档

最近一两年内&#xff0c;股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步&#xff0c;就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息&#xff0c;这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任…

软考-软件设计师(10)-专业英语词汇汇总与新技术知识点

场景 以下为高频考点、知识点汇总。 软件设计师上午选择题知识点、高频考点、口诀记忆技巧、经典题型汇总: 软考-软件设计师(1)-计算机基础知识点:进制转换、数据编码、内存编址、串并联可靠性、海明校验码、吞吐率、多媒体等: 软考-软件设计师(1)-计算机基础知识点:进制…

开源AI网络爬虫工具Crawl4AI

引言 在信息化时代&#xff0c;网络爬虫作为从互联网中提取信息的重要工具&#xff0c;扮演着至关重要的角色。Crawl4AI作为一款开源AI网络爬虫工具&#xff0c;凭借其功能强大和易用性&#xff0c;受到了广泛关注。本文将详细探讨Crawl4AI的定义、特点、优势&#xff0c;以及…

汽车开发流程管理工具赋能安全与质量

随着数字化、人工智能、自动化系统及物联网技术的迅速发展&#xff0c;工程驱动型企业正面临重大转型挑战&#xff0c;亟需加速并深化其变革步伐。众多企业正试图通过采用基于模型的系统工程(MBSE)、产品线工程(PLE)、ASPICE、安全、网络安全、软件定义汽车、敏捷和精益开发实践…

矢量网络分析仪工作原理

矢量网络分析仪&#xff08;Vector Network Analyzer&#xff0c;VNA&#xff09;是一种用于测量射频&#xff08;RF&#xff09;和微波信号的仪器。它主要用于测量器件的S参数&#xff08;散射参数&#xff09;&#xff0c;包括幅度和相位响应&#xff0c;以评估和分析射频元件…

Python、C#、C++音频处理库

Python、C#、C音频处理库 Sounddevice: Python音频处理库 https://github.com/spatialaudio/python-sounddevice/ https://pypi.org/project/sounddevice/ https://python-sounddevice.readthedocs.io/en/0.5.1/ https://python-sounddevice.readthedocs.io/en/0.5.1/exampl…

解决mac更新后无法连接git问题

问题描述 在Mac电脑上使用git克隆命令时出现报错&#xff1a; no matching host key type found. Their offer: ssh-rsa问题原因 苹果更新了ssh默认不再支持ssh-rsa导致。 问题解决 修改ssh默认config配置文件&#xff0c;再重新生成rsa密钥 sudo nano ~/.ssh/config写入文本…

港大和字节提出长视频生成模型Loong,可生成具有一致外观、大运动动态和自然场景过渡的分钟级长视频。

HKU, ByteDance&#xff5c;⭐️ 港大和字节联合提出长视频生成模型Loong&#xff0c;该模型可以生成外观一致、运动动态大、场景过渡自然的分钟级长视频。选择以统一的顺序对文本标记和视频标记进行建模&#xff0c;并使用渐进式短到长训练方案和损失重新加权来克服长视频训练…