达梦数据库性能优化

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      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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/894751.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ParallelsDesktop20最新版本虚拟机 一键切换系统 游戏娱乐两不误

让工作生活更高效&#xff1a;Parallels Desktop 20最新版本虚拟机的神奇之处 大家好&#xff01;&#x1f44b; 今天我要跟大家安利一款让我工作效率飞升的神器——Parallels Desktop 20最新版本虚拟机。作为一个日常需要在不同操作系统间来回穿梭的人&#xff0c;这款软件简直…

【升华】python基础包NumPy学习

NumPy是使用Python进行科学计算的基础软件包。除其他外&#xff0c;它包括&#xff1a; 功能强大的N维数组对象。精密广播功能函数。集成 C/C和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。 # 1、安装包 $ pip install numpy# 2、进入python的交互式界面 $…

从零开始学PHP之helloworld

前言 每一门编程语言的第一个程序就是输出hell world&#xff08;别杠&#xff0c;杠就是你对&#xff09; 开始 上一篇讲完了开发环境的安装&#xff0c;这次讲编辑器的安装&#xff0c;顺带完成上一篇的作业&#xff08;输出hello world&#xff09; 安装PHPstorm 我用的…

前端布局与响应式设计综合指南(末)

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Css篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:前端布局与响应式设计综合指南(末) 目录 61、为什么要初始化CSS样式 62、CSS3 有哪些新特性 63、…

【python】NumPy(三):文件读写

目录 ​前言 NumPy 常见IO函数 save()和load() savez() loadtxt()和savetxt() 练习 前言 在数据分析中&#xff0c;我们经常需要从文件中读取数据或者将数据写入文件&#xff0c;常见的文件格式有&#xff1a;文本文件txt、CSV格式文件&#xff08;用逗号分隔&#xff…

vue-router钩子中调用ElMessage等样式出错

升级 vue3.5 时遇到奇怪的问题, 页面点击离开没反应 经过排查, 是以下几点相互作用导致此问题 vue 有应用上下文的概念, 例如 runWithContext API,vue-router 在调用钩子时会获取 vue 的应用上下文element-plus 在唤起弹窗时会从 parent 或 应用上下文上拿到 config 信息eleme…

大数据环境 hbase+ phoenix idea

1、选择jdk 2、添加驱动 3、添加数据源

【精选】基于javaweb的流浪动物领养系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入&#xff0c;但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接&#xff0c;重设密码。 三、下载完成后&#xff0c;现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦&#xff0c;不然…

从零入门AI篡改图片检测(金融场景)#Datawhale十月组队学习

1.大赛背景 在全球人工智能发展和治理广受关注的大趋势下&#xff0c;由中国图象图形学学会、蚂蚁集团、云安全联盟CSA大中华区主办&#xff0c;广泛联合学界、机构共同组织发起全球AI攻防挑战赛。本次比赛包含攻防两大赛道&#xff0c;分别聚焦大模型自身安全和大模型生成内容…

pc轨迹回放制作

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;pc轨迹回放制作 主要内容&#xff1a;制作车辆轨迹操作页&#xff0c;包括查询条件、动态轨迹回放、车辆轨迹详情表单等 应用场景&#xff1a;车辆…

sqli-labs less-25a

Sqli-labs less-25a 判断注入类型&#xff0c;列数及注入点 构造 http://192.168.140.130/sq/Less-25a/?id1 回显正常 http://192.168.140.130/sq/Less-25a/?id1’ 报错 构造 http://192.168.140.130/sq/Less-25a/?id1 and 11 回显正常 http://192.168.140.130/sq/Less-25a…

RabbitMQ 入门(三)SpringAMQP五种消息类型(Basic Queue)

一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能&#xff1a; - 自动…

唐布拉不是家,而我途径它(一)

唐布拉不是家&#xff0c;而我途径它 旅途是一本书&#xff0c;风吹哪页读哪页&#xff0c;笔搁哪句写哪句。 最后一站在唐布拉的尼勒克&#xff0c;晚上11点才到&#xff0c;车停在门口&#xff0c;打开车门就看到这句话&#xff1a; 希望你快乐 今天 明天 天天刚下完雨&am…

2024年诺贝尔物理学奖揭晓:AI背后的“造梦者”是谁?

想象一下&#xff0c;你早上醒来&#xff0c;智能音箱为你播放天气和新闻&#xff0c;中午你用手机刷视频&#xff0c;精准的推荐内容简直和你心有灵犀&#xff0c;晚上回家&#xff0c;自动驾驶汽车安全地把你送回家。这一切看似理所当然&#xff0c;背后却有一双无形的手推动…

双向链表常见接口实现

一 . 链表的分类 链表的结构非常多样,以下情况组合起来就有8种( 2 * 2 * 2 ) 链表结构 : 1.1 单向/双向 1 . 单向 : 只能往一个方向遍历 (仅有一个指针 --> 指向下一个结点的地址), 如下图 : 只能从d1找到d2 , d2 找不到d1 2 . 双向 : 能从两个方向遍历 ( 有指向下一个结点…

Leetcode 841. 钥匙和房间

1.题目基本信息 1.1.题目描述 有 n 个房间&#xff0c;房间按从 0 到 n – 1 编号。最初&#xff0c;除 0 号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而&#xff0c;你不能在没有获得钥匙的时候进入锁住的房间。 当你进入一个房间&#xff0c;你可能会在…

深度解析服务级别协议(SLA):保障业务稳定性的关键承诺

前言&#xff1a; 在当今数字化时代&#xff0c;企业的业务连续性和稳定性至关重要。服务级别协议&#xff08;SLA&#xff09;作为服务提供商与客户之间的正式承诺&#xff0c;是确保服务质量、可用性、责任的重要工具。SLA不仅定义了服务提供商应达到的服务指标&#xff0c;还…

华为ENSP Truck命令指南:从入门到精通的全方位解析 引言

博客标题&#xff1a;华为ENSP Truck命令指南&#xff1a;从入门到精通的全方位解析 引言 在网络工程的世界里&#xff0c;华为ENSP&#xff08;Enterprise Network Simulation Platform&#xff09;作为一款强大的网络模拟工具&#xff0c;为我们提供了在虚拟环境中实践和学习…

MySQL程序介绍<一>

目录 MySQL程序简介 mysqld - MySQL 服务器 ​编辑 mysql - MySQL 命令⾏客⼾端 MySQL程序简介 1.MySQL安装完成通常会包含如下程序&#xff1a; Linux系统程序⼀般在 /usr/bin⽬录下&#xff0c;可以通过命令查看 windows系统⽬录&#xff1a; 你的安装路径\MySQL Server…