当前位置: 首页 > news >正文

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

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

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

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

目录

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

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

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

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

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

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


一、分析SQL语句中涉及到的物理表,依次收集统计信息
1、单表数据量小的表,可通过以下方式收集(针对表中所有字段收集,速度相对慢)
-- 指定表收集全表字段统计信息
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、单表数据量大的表,可通过以下方式收集(针对表中单个字段收集,速度相对快)
-- 指定字段收集统计信息
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对应的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的缓存(cache_item字段来源于 第一步)
call SP_CLEAR_PLAN_CACHE(cache_item);

示例:
call SP_CLEAR_PLAN_CACHE(281008439485408);

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

相关文章:

  • VScode内接入deepseek包过程(本地部署版包会)
  • 【网络编程】之数据链路层
  • 使用卷积神经网络(CNN)对颜色失真情况下进行数字识别
  • 【全栈】SprintBoot+vue3迷你商城-细节解析(1):Token、Jwt令牌、Redis、ThreadLocal变量
  • 请谈谈 em、px、rem、vh、vw 的区别,如何使用?
  • ubuntu20动态修改ip,springboot中yaml的内容的读取,修改,写入
  • 打造智能语料库:通过Coco AI Server 实现 Notion 笔记 RAG 检索功能
  • vue3项目实践心得-寻找未被使用的最小编号
  • LVGL图形界面编程(基础篇): 一.LVGL入门
  • 单表数据文件坏块检查及恢复
  • 计算光学基础
  • 移动通信发展史
  • Django创建一个非前后端分离平台
  • 基于 Redisson 分布式锁 实现报名人数限制功能
  • EasyRTC智能硬件:实时畅联、沉浸互动、消音护航
  • 数据结构之栈和队列
  • 为什么WebGPU渲染通道描述符使用TextureView而非直接操作Texture?
  • 面试题复习
  • PyTorch Tensor 形状变化操作详解
  • 告别第三方云存储!用File Browser在Windows上自建云盘随时随地访问
  • dede打包好的网站怎么提取模板/爱站网长尾词挖掘
  • 行业推广做哪个网站好/app推广引流
  • 湖南长沙微信平台号/百度关键词相关性优化软件
  • wordpress前台登陆界面/优化快速排名公司
  • 公司网站如何做公安部备案/代写
  • 动漫人物做羞羞事的网站/泉州百度搜索推广