达梦数据库-执行计划缓存查看

一 基础环境信息

数据库版本:达梦8-03134283890-20220304-158322-10045

操作系统版本:CentOS Linux release 7.6.1810 (Core)

二 SQL执行流程

假如在DM中有一个查询会话请求,那么大概流程如下: 
(1)客户端对发起SQL请求;
(2)数据库服务进程创建连接、分配线程处理相关的请求;
(3)查找SQL CACHE MANAGERMENT(SQL缓冲区负责储存sql的计划、语句和结果集缓存等信息);
(4)如果存在相同的执行计划,则执行SQL,获取数据,返回给客户端;
(5)如果不存在执行计划,则,进行语法检查,语义检查,权限,SQL优化(查询转换,执行代价分析),最终形成执行计划; 
(6)执行SQL,获取数据返回给客户端。

三 问题描述

1.当我们在优化SQL的时候,我们首先考虑SQL缓冲区是否有执行计划,这个SQL执行计划是否是最优的;

2.当我们执行SQL的时候,第一次可能效率较低,第二次存在了SQL执行计划,以及数据缓存,查询效率会高一点;

3.在优化SQL的时候,需要查看SQL缓冲区中的执行计划。

注意:优化SQL的过程,不要再业务高峰期进行,比如创建索引,清空SQL语句的执行计划等操作

四 操作流程

1. 执行查询SQL

select * fromTEST.TEST;

2. 查询SQL的cache_item(举例为140116797555440)

select cache_item,sqlstr from v$cachepln where sqlstr like '%TEST.TEST%';

3. 将内存中SQL的执行计划生成导出,查看执行计划是否存在异常

alter session set events 'immediate trace name plndump level 140116797555440,dump_file ''/soft/dmdbms/dm.log''';

4. 查看执行计划生成导出文件

cat /soft/dmdbms/dm.log

5. 清理内存中的执行计划

SP_CLEAR_PLAN_CACHE(140116797555440);

6. 优化SQL

7.查看执行计划

explain select * fromTEST.TEST;


版权声明:本文为qq_41071828原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。