达梦数据库获取SQL真实的执行计划

news/2024/11/14 15:05:36/文章来源:https://www.cnblogs.com/xuchuangye/p/18369695

一、set autotrace trace

disql下执行set autotrace trace开启AUTOTRACE功能,执行SQL语句,并打印实际的执行计划。

SQL> set autotrace trace
SQL> select a.employee_name, b.department_name from dmtest.t_emp a join dmtest.t_dept b on a.department_id = b.department_id and b.department_id=102;

 目前看到的是数据库显示的执行计划

二、v$cachepln中获取执行计划

v$cachepln中保存了SQL缓冲区中的执行计划信息,在ini参数USE_PLN_POOL !=0时才统计。根据v$cachepln中的cache_item可以获取实际执行计划信息:

SQL> select cache_item, sqlstr from v$cachepln where sqlstr like 'select a.employee_name, b.department_name from dmtest.t_emp a join dmtest.t_dept b on a.department_id = b.department_id and b.department_id=102%';
SQL> alter session set events 'immediate trace name plndump level 140244262459496, dump_file ''/opt/dm/sqlplntest.log''';

查看dump的执行计划信息:

 这个是真实的执行计划

有些是因为表中索引过多,优化器并没有走最优的执行计划,搜集统计信息和清理执行计划缓存也并不能解决问题,这时候需要绑定执行计划。有两种方式可以处理问题

1.通过改SQL select /*+index(TEST,IDX_TEST_ID) */* from test where id>1;
这种需要在应用去改,加hint的方式解决/*+index(表名,索引名) */

2.通hint注入的方式去改

sp_set_para_value(1,'ENABLE_INJECT_HINT',1);  ----开启hint注入

Ø SQL 只能是语法正确的增删改查语句;

Ø SQL 会经过系统格式化,格式化之后的 SQL 和指定的规则名称必须全局唯一;

Ø HINT 一指定,则全局生效;

Ø系统检查 SQL 匹配时,必须是整条语句完全匹配,不能是语句中子查询匹配;

Ø可通过 SYSINJECTHINT 视图查看已指定的 SQL 语句和对应的 HINT

--对指定SQL增加HINT

SF_INJECT_HINT('sql语句', '参数名(参数值)', '规则名', null,TRUE,TRUE);

实际应用:

SQL> SF_INJECT_HINT('select * from test where id>1;','INDEX(TEST,IDX_TEST_ID)','INJECT1','test injecting hint', TRUE,TRUE);指定该语句使用IDX_TEST_ID索引

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows大全

1、快捷键 2、win+r msinfo32 系统信息 services.msc 服务 regedit 注册表编辑器 mstsc 远程桌面连接 gpedit.msc 本地组策略编辑器 msconfig 系统配置

MySQL主从同步如何保证数据一致性?

MySQL 主从同步是 MySQL 集群方案中的一种,也是实现难度最低的一种。 然而,现在的面试都不问 MySQL 主从同步原理了,而是开始问主从同步怎么保证数据一致性问题了。 所以,今天就给大家安排上了。 1.什么是数据一致性? 数据一致性是指在一个系统中,数据在不同的部分、不同…

一汽集团数据专家分享:实时数据技术在汽车行业的应用与实践经验

在当今快速变化的商业环境中,数据的实时性和准确性是企业制胜的关键。然而,数据孤岛、数据分散、处理时效差等难题却成为制约企业发展的瓶颈。本次分享将围绕实时数据技术在汽车行业的应用与实践经验分享展开【导读】在当今快速变化的商业环境中,数据的实时性和准确性是企业…

php5.6安装redis扩展

参考:https://www.cnblogs.com/q35455075/p/14110914.html1.下载 选择php_redis-2.2.5-5.6-ts-vc11-x64.zip和php_igbinary-1.2.1-5.5-ts-vc11-x64.zip 下载地址: http://windows.php.net/downloads/pecl/releases/redis/2.2.7/ http://windows.php.net/downloads/pecl/relea…

AP9195 7-24V高效率、高精度的升压型大功率 LED 照明灯与恒流驱动控制芯片方案

概述 AP9195 是一款高效率、高精度的升压型大功率LED灯恒流驱动控制芯片。 AP9195 内置高精度误差放大器,固 定关断时间控制电路,恒流驱动电路等, 特别适合大功率、多个高亮度 LED 灯串的 恒流驱动。 AP9195 通过调节外置的电流采样电 阻,能控制高亮度 LED 灯的驱动电流,使…

DC-6

靶机介绍靶机下载地址:https://download.vulnhub.com/dc/DC-6.zip 环境搭建下载之后,解压,使用vmware导入或者virtualbox导入都可以,但注意要保证与你的攻击机在同一网段下,vmware要使用最新版kali攻击机:192.168.98.136 靶机渗透 信息收集 扫描主机 arp-scan -l​​靶机i…

自动化测试是什么?为何选择 Apifox 作为自动化测试工具

什么是自动化测试? 自动化测试就是利用专门的软件工具来执行测试用例,并将实际结果与预期结果进行比对的过程。与手动测试相比,自动化测试能够大大提高测试效率,降低人为错误,增加测试覆盖率,同时还能节省大量时间和成本。举个“栗子”,如果你需要反复测试一个有上百个输…

真去送了外卖的程序员,来聊聊他眼中的《逆行人生》丨编码人声

「编码人声」是由「RTE开发者社区」策划的一档播客节目,关注行业发展变革、开发者职涯发展、技术突破以及创业创新,由开发者来分享开发者眼中的工作与生活。我们请来一位真的去体验了送外卖的程序员,请他聊聊他眼中的《逆行人生》。本期节目,我们会围绕这部电影的真实性和一…

redhat8 rhel8 启动grub损坏修复

环境:redhat8.4 RHEL8.4 服务器:华为G560 问题描述:调整了/etc/default/grub文件,重新生成/boot/grub2/grub.cfg导致机器启动失败,直接进入了rescue模式 解决方案: 启动到如下界面 选择c进入grub命令界面 可以使用ls命令去查看驱动器的情况 (hd0) 是第一个硬盘。 (hd0,ms…

Easyadmin的安装流程

应用环境: 1.phpStudy 8.1.1.3 2.WNMP:Windows10 + Nginx1.15.11 + MySql5.7 + PHP7.2.9nts 框架版本: 1.ThinkPHP6.0 2.layui2.9.x 3.Echarts5.51 流程步骤: 1.开启phpStudy 必要环境后,创建本地网站目录 2.将本地目录指向public后,填写好伪静态规则:location / {  …

图片相似度对比SSIM和PHash

选择最准确的图像对比算法取决于你的具体需求和应用场景。不同的算法在不同的场景下表现可能不同。以下是一些常见的图像对比算法及其适用场景: 1. 结构相似性 (Structural Similarity Index, SSIM)描述: SSIM 是一种用来衡量两张图像之间的相似度的指标,它考虑了亮度、对比度…

图论杂题 做题笔记

在这个随笔中,会有笔者的一些做题笔记,包括但不限于图论的思想、解题技巧、代码实现等。在这个随笔中,会有笔者的一些做题笔记,包括但不限于图论的思想、解题技巧、代码实现等。