达梦数据库针对慢SQL,收集统计信息&清除执行计划缓存

前言:若遇到以下场景,大概率是SQL走错了执行计划:

1、一条SQL在页面上查询特别慢,但拿到数据库终端执行特别快

2、一条SQL在某种检索条件下查询特别慢,但拿到数据库终端执行特别快

此时,可以尝试按照下述步骤进行恢复:

目录

一、分析SQL语句中涉及到的物理表,依次收集统计信息

1、单表数据量小的表,可通过以下方式收集(针对表中所有字段收集,速度相对慢)

2、单表数据量大的表,可通过以下方式收集(针对表中单个字段收集,速度相对快)

二、SQL语句涉及表的统计信息收集完毕后,清除当前SQL的执行计划缓存

1、查询指定SQL的所有执行计划缓存(一条SQL可能会有多条执行计划缓存,每个缓存都有一个唯一的cache_item值,逐一记录每个cache_item值)

2、根据第一步得到的所有cache_item,清除当前SQL所有的执行计划缓存


一、分析SQL语句中涉及到的物理表,依次收集统计信息
1、单表数据量小的表,可通过以下方式收集(针对表中所有字段收集,速度相对慢)
sql 复制代码
-- 指定表收集全表字段统计信息
call DBMS_STATS.GATHER_TABLE_STATS('模式名', '物理表名称', NULL, 100, TRUE, 'FOR ALL COLUMNS SIZE AUTO', 64,'GLOBAL');

--示例:
call DBMS_STATS.GATHER_TABLE_STATS('SYSTEM', 'ORDER_TEST', NULL, 100, TRUE, 'FOR ALL COLUMNS SIZE AUTO', 64,'GLOBAL');
2、单表数据量大的表,可通过以下方式收集(针对表中单个字段收集,速度相对快)
sql 复制代码
-- 指定字段收集统计信息
stat 100 on 物理表名(表字段名);

--示例:
stat 100 on ORDER_TEST(ID);
stat 100 on ORDER_TEST(AMOUNT);
stat 100 on ORDER_TEST(DELETE_FLAG);
stat 100 on ORDER_TEST(ACCOUNTING_MONTH);
二、SQL语句涉及表的统计信息收集完毕后,清除当前SQL的执行计划缓存
1、查询指定SQL的所有执行计划缓存(一条SQL可能会有多条执行计划缓存,每个缓存都有一个唯一的cache_item值,逐一记录每个cache_item值)
sql 复制代码
-- 模糊查询指定SQL的所有执行计划缓存,获取SQL对应的cache_item字段值
select cache_item, *
from v$cachepln
where sqlstr like '%你的SQL语句%';

--示例:
select cache_item, *
from v$cachepln
where sqlstr like '%SELECT * FROM ORDER_TEST WHERE ACCOUNTING_MONTH = '2025-01'%';
2、根据第一步得到的所有cache_item,清除当前SQL所有的执行计划缓存
sql 复制代码
-- 指定清空某条SQL的缓存(cache_item字段来源于 第一步)
call SP_CLEAR_PLAN_CACHE(cache_item);

示例:
call SP_CLEAR_PLAN_CACHE(281008439485408);

特别注意:SP_CLEAR_PLAN_CACHE存储过程执行时,若不传cache_item,则会清除当前模式下所有SQL的执行计划缓存,生产环境请谨慎操作。

相关推荐
名字还没想好☜8 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
ltl9 小时前
Serverless 数据库弹性理论:Neon 与 Aurora Serverless v2
数据库
marvelyu13 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算13 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
zd20057214 小时前
海洋微生物数据库
数据库·宏基因组
海上小飞龙14 小时前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式
xiaoye-duck14 小时前
MySQL 表约束全解:从基础约束到外键关联规则
数据库·mysql
Hammer_Hans15 小时前
DFT笔记98
java·开发语言·数据库
迪康Defender15 小时前
从静态存储到动态流转:终端透明加密两种模式实战解析
运维·服务器·网络·数据库·其他
2601_9657984715 小时前
Is Piroll WordPress Theme Worth It for Freelancers? Full Review
数据库·php