达梦SQL执行耗时异常问题排查学习

达梦SQL执行耗时异常问题排查学习

1 查看是否开启计划缓存

 select PARA_NAME,PARA_VALUE 
 from v$dm_ini 
 where para_name like 'USE_PLN_POOL';

参数解释:是否重用执行计划。

    0:禁止执行计划的重用;
    1:启用执行计划的重用功能 ;
    2:对不包含显式参数的语句进行常量参数化优化;
    3:即使包含显式参数的语句,也进行常量参数化优化

2 构造数据

create table test(c1 int, c2 varchar(100), c3 int, primary key(c1));
 
 begin
   for i in 1..100000 loop
      insert into test values(i, 'aaaaaaa', i);
    end loop;
   commit;
end;

     

      

3 执行查询语句:

select * from test where c3=3;

4 查看执行计划缓存表

select cache_item,sqlstr 
from v$cachepln 
where sqlstr like '%select * from test where c3=3%';

 

5 根据cache_item生成日志文件

alter session set events 'immediate trace name plndump level 查出的cache_item,dump_file ''/dbdata/plan0415.log''';

6 查看后成的日志文件

如果仅查看执行计划可以用explain sql语句查看,或者使用manager管理工具里的查看执行计划按钮查看

7 根据缓存表里的CACHE_ITEM列手动淘汰该计划

--清理计划缓存
call SP_CLEAR_PLAN_CACHE(cache_item);

8 查看执行计划缓存表,该sql的缓存已被清除

 

9、执行更新统计信息

DBMS_STATS.GATHER_SCHEMA_STATS('模式名',100,TRUE,'FOR ALL COLUMNS SIZE AUTO');--更新整个模式的统计信息

DBMS_STATS.GATHER_TABLE_STATS('JQ_FSSC','AP_DEBTBILL',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');--更新模式下面的某个表的统计信息

9.1 GATHER_SCHEMA_STATS函数详解

收集模式下对象的统计信息。

语法如下:

PROCEDURE GATHER_SCHEMA_STATS (

OWNNAME VARCHAR(128),

ESTIMATE_PERCENT  DOUBLE DEFAULT

TO_ESTIMATE_PERCENT_TYPE(GET_PREFS('ESTIMATE_PERCENT')),

BLOCK_SAMPLE  BOOLEAN DEFAULT FALSE,

METHOD_OPT VARCHAR DEFAULT GET_PREFS('METHOD_OPT'),

DEGREE INT DEFAULT TO_DEGREE_TYPE(GET_PREFS('DEGREE')),

GRANULARITY VARCHAR DEFAULT GET_PREFS('GRANULARITY'),

CASCADE BOOLEAN DEFAULT TO_CASCADE_TYPE(GET_PREFS('CASCADE')),

STATTAB VARCHAR DEFAULT NULL,

STATID VARCHAR DEFAULT NULL,

OPTIONS VARCHAR DEFAULT 'GATHER',

OBJLIST OUT OBJECTTAB DEFAULT NULL,

STATOWN VARCHAR DEFAULT NULL,

NO_INVALIDATE  BOOLEAN DEFAULT TO_NO_INVALIDATE_TYPE

(GET_PREFS('NO_INVALIDATE')),

FORCE  BOOLEAN DEFAULT FALSE,

OBJ_FILTER_LIST OBJECTTAB DEFAULT NULL

);

  OWNNAME 模式名,区分大小写。

  ESTIMATE_PERCENT 收集的百分比,范围为 0.000001~100,默认系统自定。

  BLOCK_SAMPLE 保留参数,是否使用随机块代替随机行,默认为 TRUE。

  METHOD_OPT控制列的统计信息集合和直方图的创建;默认为 FOR ALL COULMNS SIZE AUTO;只支持其中一种格式:FOR ALL [INDEXED | HIDDEN] COLUMNS [<size_clause>]<size_clause>::= SIZE {integer | REPEAT | AUTO | SKEWONLY}

  DEGREE 保留参数,收集的并行度,默认为 1。

  GRANULARITY 保留参数,收集的粒度,默认为 ALL。

  CASCADE 是否收集索引信息,TRUE 或 FALSE。默认为 TRUE。

  STATTAB 保留参数,统计信息存放的表,默认为 NULL。

  STATID 保留参数,统计信息的 ID,默认为 NULL。

  OPTIONS控 制 收 集 的 列 , 默 认 为 NULL ; 选 项 如 下 : GATHER|GATHER AUTO|GATHER STALE|GATHER EMPTY|LIST AUTO|LIST STALE|LIST EMPTY。各选项解释如下:

 GATHER:收集模式下所有对象的统计信息。

 GATHER AUTO:自动收集需要的统计信息。系统隐含的决定哪些对象需要新的统

计信息,以及怎样收集这些统计信息。此时,只有 OWNNAME,STATTAB, STATID,

OBJLIST AND STATOWN有效,返回收集统计信息的对象。

 GATHER STALE:对旧的对象收集统计信息。返回找到的旧的对象。

 GATHER EMPTY:收集没有统计信息对象的统计信息。返回这些对象。

 LIST AUTO:返回GATHER AUTO方式处理的对象。

 LIST STALE:返回旧的对象信息。

 LIST EMPTY:返回没有统计信息的对象。

  OBJLIST 返回 OPTION 选项对应的链表,默认为 NULL。

  STATOWN 保留参数,统计信息的模式,默认为 NULL。

  NO_INVALIDATE 保留参数,是否让依赖游标失效,默认为 TRUE。

  FORCE 保留参数,是否强制收集统计信息,默认为 FALSE。

  OBJ_FILTER_LIST 存放过滤条件的模式名、表名和子表名,默认为 NULL。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值