达梦SQL自动诊断调优之——DBMS_SQLTUNE

达梦SQL自动诊断调优之——DBMS_SQLTUNE

1、DBMS_SQLTUNE 包介绍

DBMS_SQLTUNE系统包兼容Oracle的DBMS_SQLTUNE包的部分功能,提供一系列对实时SQL监控的方法。DBMS_SQLTUNE 包可以实时监控 SQL 执行过程中的信息,包括:执行时间、执行代价、执行用户、统计信息、生成调优建议等功能。

2、使用限制和方法

2.1 测试环境介绍

操作系统:Kylin V10
数据库版本:dm8

2.2使用前置条件

1)先调用系统过程创建系统包
SP_CREATE_SYSTEM_PACKAGES (1,‘DBMS_SQLTUNE’);
2)开启SQL监控参数
SP_SET_PARA_VALUE (1,‘ENABLE_MONITOR’,1);
SP_SET_PARA_VALUE (1,‘MONITOR_SQL_EXEC’,1);
在这里插入图片描述

2.2 调优示例

–测试数据准备
CREATE TABLE TEST_SQLTUNE (C1 INT,C2 VARCHAR(20));
INSERT INTO TEST_SQLTUNE SELECT LEVEL,‘TEST’ ||LEVEL FROM DUAL CONNECT BY LEVEL <=10000;
COMMIT;
SELECT C1,C2 FROM TEST_SQLTUNE;
在这里插入图片描述

–执行SQL 语句
SELECT C1 FROM TEST_SQLTUNE; --记录执行号:823
–查询SQL监控报告
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID=>823) FROM DUAL;
在这里插入图片描述

备注:可以看到C1列并没有创建索引,查询走全表扫描。

下面我们利用工具看是否能给我们一些建议呢?
–创建调优任务
DBMS_SQLTUNE.CREATE_TUNING_TASK(‘SELECT C1 FROM TEST_SQLTUNE’,TASK_NAME=>‘TEST_SQLTUNE’);
在这里插入图片描述

–执行调优任务
DBMS_SQLTUNE.EXECUTE_TUNING_TASK(‘TEST_SQLTUNE’);
在这里插入图片描述

–生成调优报告
SET LONG 999999 --将LONG设置成999999,以保证完整显示调优报告
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(‘TEST_SQLTUNE’);
在这里插入图片描述

–根据建议我们来试试,索引名字根据实际情况改
CREATE INDEX IDX$$_1 ON “SYSDBA”.“TEST_SQLTUNE”(“C1”);
–再次运行一次调优报告
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(‘TEST_SQLTUNE’);
在这里插入图片描述

备注:可以看到此时我们的SQL已经最优效果。

–关闭调优任务
DBMS_SQLTUNE.DROP_TUNING_TASK(‘TEST_SQLTUNE’);
在这里插入图片描述

3、DBMS_SQLTUNE包使用总结:

1)当表从未收集过统计信息情况,自动给出收集统计信息语句;
2)当表无任务索引情况,自动生成索引的创建语句,根据实际情况选择索引创建。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值