SQL 执行计划管理(SPM)
一、SPM 需求背景
任何数据库应用程序的性能在很大程度上都依赖于查询执行,尽管优化器无需用户干预就可以评估最佳计划,但是 SQL 语句的执行计划仍可能由于以下多种原因发生意外更改:版本升级、重新收集优化器统计信息、改变优化器参数或模式/元数据定义。由于无法保证计划始终向更好的情况改变,如果在环境变化时能够维持当前执行计划不变,或者只向更好的情况改变,将是最理想的解决方案。
二、SPM 重要构成
SQL 计划管理 (SPM) 确保运行时性能永远不会因为执行计划的更改而降低。因此,SQL 语句执行时只使用已接受(受信任)的执行计划;跟踪任何计划发展并随后对其进行评估,如果新计划未造成运行时性能改变或运行时性能提高,则接受新计划为经验证的计划。
SQL 计划管理由三部分组成:SQL 计划基准捕获、SQL计划基准选择、SQL 计划基准发展。
1. SQL 计划基准捕获
创建 SQL 计划基准,包含所有 SQL 语句的受信任的执行计划(ACCEPTED = YES)
(1)如何创建 SQL 计划基准
包含两种方式:
-
自动捕获执行计划
-
批量加载执行计划,包含四种技术
i 针对给定的 SQL 调优集(STS)加载执行计划
ii 从存储大纲加载执行计划
iii 使用游标缓存中目前的执行计划
iv 从临时表解压缩现有的 SQL 计划基准
(2)如何查看 SQL 计划基准
SQL > select plan_name, sql_handle, enabled, accepted, fixed, module, sql_text from dba_sql_plan_baselines;PLAN_NAME SQL_HANDLE ENA ACC FIX
----------------------------------- -------------------------------- --- --- ---
MODULE
-----------------------------------------------------
SQL_TEXT
------------------------------------------------------------------------------------
SQL_PLAN_191pkfncj4zuddbd90e8e SYS_SQL_1486b27519127f4d YES YES NO
sqlplus@e2c90ae100ab(TNS V1-V3)
select * from t1 where idcard > 500SQL_PLAN_d9zsu6rdznqvgdbd90e80 SYS_SQL_d4ff1a35dbfa5bdfa5b6f YES YES NOsqlplus2e2c90ae100ab(TNS V1-V3)select * from t1 where user_id > 100
2. SQL 计划基准选择
(1)执行计划的三个属性
- ENABLED - 表示计划已启用,可供优化器使用,若计划未设置未 ENABLED,则优化器不考虑此计划。
- ACCEPTED - 表示该计划已被验证为有效计划,若计划未验证为 ACCEPTED,则优化器不考虑此计划。
- FIXED - 固定计划,表示优化器只会考虑标记为 FIXED 的执行计划,且从中选择 cost 最低的固定计划。
(2)如何选择 SQL 计划
** 注意这里每次重新计算 cost 的代价不大,因为执行计划是已知的,优化器不必遍历所有的可能,只需根据算法计算出已知计划的 cost 便可。
3. SQL计划基准发展
(1)SQL 计划基准发展的三种选择
- 仅当其性能比现有 SQL 计划基准更准更佳时才接收新计划,逻辑如下图
- 不进行性能检验就接收新计划
- 运行性能比较并生成报告,但不发展新计划
(2)如何发展 SQL 计划基准

三、使用和管理 SQL 管理库
1. 初始化参数
optimizer_capture_sql_plan_baselines - 控制可重复 SQL 语句的新 SQL 计划基准的自动捕获,默认设置为 FALSE
optimizer_use_sql_plan_baselines - 控制 SQL 计划基准的使用,启用后,优化器在 SQL 计划基准中寻找正在编译的 SQL 语句的计划,如果找到,优化器会计算各个计划的性能开销,然后选择开销最低的计划。默认设置为 TRUE
2. 管理 SQL 管理库的空间使用
管理库包括语句日志、计划历史记录和 SQL 计划基准。
- 存储:SQL 管理库是数据库字典的组成部分,存储在 SYSAUX 表空间中。SQL 管理库默认占用不超过 SYSAUX 表空间的10%,可设置为 1%-50%。每周检测,若超过该限制,则会告警。
- 清理:每周定期清理执行计划,默认超过 53 周未使用的计划都会被清理,可设置为 5-523 周。
相关文章:
SQL 执行计划管理(SPM)
一、SPM 需求背景 任何数据库应用程序的性能在很大程度上都依赖于查询执行,尽管优化器无需用户干预就可以评估最佳计划,但是 SQL 语句的执行计划仍可能由于以下多种原因发生意外更改:版本升级、重新收集优化器统计信息、改变优化器参数或模式…...
浅谈微服务异步解决方案
导言 异步是一种设计思想,不是设计目的,因此不要为了异步而异步,要有所为,有所不为。 异步不是『银弹』, 避免试图套用一个『异步框架』解决所有问题, 需要根据不同的业务特点或要求,选择合适的…...
【音视频SDK测评】线上K歌软件开发技术选型
摘要 在线K歌软件的开发有许多技术难点,需考虑到音频录制和处理、实时音频传输和同步、音频压缩和解压缩、设备兼容性问题等技术难点外,此外,开发者还应关注音乐版权问题,确保开发的应用合规合法。 前言 前面写了几期关于直播 …...
Jackson:String转object反序列化失败
场景 消费mq时String转Object 代码 for (MessageExt msg : msgs) {String msgBody new String(msg.getBody(), StandardCharsets.UTF_8);BinlogEvent binlogEvent JsonUtil.silentString2Object(msgBody, BinlogEvent.class);binlogEvent.setPort(Long.valueOf(port));tCo…...
Spark_Core---6
spark 相关概念补充 课程目标 了解spark的安装部署知道spark作业提交集群的过程 6.1 spark的安装部署 1、下载spark安装包 http://spark.apache.org/downloads.html 高版本不存在cdh的编译版本,可以从官网下载源码版本,指定高版本hadoop进行编译 编译…...
游戏运营需要什么条件和准备?
游戏运营是一个复杂的过程,需要综合考虑多个因素。以下是一些游戏运营需要的条件和准备: 1、良好的游戏产品 首先,需要有一款优秀、有吸引力的游戏产品。游戏的质量和内容决定了用户是否愿意下载、留存和付费。 2、游戏运营团队 拥有专业…...
SVN限制Message提交的格式
限制Message提交的格式必须为以下格式 [Version] [Description] [TPA] [Doors] REPOS"$1" TXN"$2"# Make sure that the log message contains some text. SVNLOOK/usr/bin/svnlook MSG$SVNLOOK log -t "$TXN" "$REPOS"if [[ $MSG ~ …...
windows下安装anaconda、pycharm、cuda、cudnn、PyTorch-GPU版本
目录 一、anaconda安装及虚拟环境创建 1.anaconda的下载 2.Anaconda的安装 3.创建虚拟环境 3.1 环境启动 3.2 切换镜像源 3.3环境创建 3.4 激活环境 3.5删除环境 二、pycharm安装 1.pycharm下载 2.pycharm的安装 三、CUDA的安装 1.GPU版本和CUDA版本、cudnn版本、显卡…...
【计算机网络】传输层协议 -- UDP协议
文章目录 1. 传输层相关知识1.1 端口号1.2 端口号范围划分1.3 知名端口号1.4 一些相关命令 2. UDP协议2.1 UDP协议格式2.2 UDP协议的特点2.3 什么是面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议 1. 传输层相关知识 传输层是计算机网络中的一个重要层…...
python制作超高难度走迷宫游戏,你要来挑战嘛~(赶紧收藏)
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 走迷宫,是一项充满智慧的挑战~ 作为经常刷短视频的我们,见识过不少迷宫小游戏 当然印象深刻的当然是小动物走迷宫 这里有几组挑战走迷宫的小可爱。先来看看吧! (1ÿ…...
springboot整合tio-websocket方案实现简易聊天
写在最前: 常用的http协议是无状态的,且不能主动响应到客户端。最初想实现状态动态跟踪只能用轮询或者其他效率低下的方式,所以引入了websocket协议,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务…...
《TCP IP网络编程》第十三章
第 13 章 多种 I/O 函数 13.1 send & recv 函数 Linux 中的 send & recv: send 函数定义: #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags); /* 成功时返回发送的字节数,失败…...
驱动开发 day8 (设备树驱动,按键中断实现led亮灭)
//编译驱动 (注意Makefile的编译到移植到开发板的内核) make archarm //清除编译生成文件 make clean ****************************************** //安装驱动 insmod mycdev.ko //卸载驱动 rmmod mycdev 需要在<内核路径>/arch/arm/boot/dts/ 修改 stm32mp157a-fsm…...
DataX将MySQL数据同步到HDFS中时,空值不处理可以吗
DataX将MySQL数据同步到HDFS中时,空值存到HDFS中时,默认是存储为\N,这样会有两个缺点: 会产生歧义,如果MySQL业务数据中有\N数据,那么存储到HDFS上是\N,null值存储也是\N,当用Hive查…...
P3373 【模板】线段树 2(乘法与加法)(内附封面)
【模板】线段树 2 题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 x x x;将某区间每一个数加上 x x x;求出某区间每一个数的和。 输入格式 第一行包含三个整数 n , q , m n,q,m n,…...
实现langchain-ChatGLM API调用客户端(及未解决的问题)
langchain-ChatGLM是一个基于本地知识库的LLM对话库。其基于text2vec-large-Chinese为Embedding模型,ChatGLM-6B为对话大模型。原项目地址:https://github.com/chatchat-space/langchain-ChatGLM 对于如何本地部署ChatGLM模型,可以参考我之前…...
【AltWalker】模型驱动:轻松实现自动化测试用例的生成和组织执行
目录 模型驱动的自动化测试 优势 操作步骤 什么是AltWalker? 安装AltWalker 检查是否安装了正确的版本 牛刀小试 创建一个测试项目 运行测试 运行效果 在线模型编辑器 VScode扩展 本地部署 包含登录、选择产品、支付、退出登录的模型编写 模型效果 1…...
大数据课程E3——Flume的Sink
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Sink的HDFS Sink; ⚪ 掌握Sink的Logger Sink; ⚪ 掌握Sink的File Roll Sink; ⚪ 掌握Sink的Null Sink; ⚪ 掌握Sink的AVRO Sink; ⚪ 掌握Sink的Custom Sink; 一、HDFS Sink …...
如何快速做单元测试?
首先写unit test之前,要确认自己的测试遵循两个原则: 1、尽量不要干涉原来的代码。从阅读代码的体验来说,不要让你的测试(哪怕是一小段if..else...的代码)出现在你准备测试的代码中。 2、代码要只是测试某个class里面…...
不同对象的集合转换
https://blog.csdn.net/qq_42483473/article/details/128984514 import com.alibaba.fastjson.JSON;import java.util.ArrayList; import java.util.List;/*** author */ public class ObjectConversion {/*** 从List<A> copy到List<B>* param list List<B>…...
OpenClaw 本地部署避坑指南|环境配置 + 故障排查全流程
🦞 OpenClaw 本地部署避坑指南|环境配置 故障排查全流程 开源 AI 自动化工具OpenClaw(小龙虾) 凭借本地私有化部署、无侵入系统交互、全流程自动化执行等核心特性,在开发者社区快速普及。轻量化架构与高扩展性&#…...
一款多功能显示控制器芯片,FHD 120/144Hz,支持最高1920x1080@120Hz.
主要特性特性类别具体规格输入接口1VGA (模拟RGB)、1HDMI 1.4 (带HDCP1.4/2.2)、1DP1.2 组合接口 (兼容HDMI 1.4,带HDCP1.4/2.2)输出接口2 Port LVDS,支持8bit/10bit最大分辨率1920x1200100Hz 或 1920x1080120Hz (带ODC)色彩深度输入:6/8/10b…...
收藏! Harness 让你轻松驾驭大模型,小白也能写出高效代码
本文探讨了 AI 编程 Agent 的核心要素,强调 Harness(工具、流程和反馈系统)的重要性远超单纯依赖模型。通过实例说明,优化编辑格式等 Harness 设计可显著提升 Agent 成功率。文章提出,为 AI 准备更好的工作台ÿ…...
图片转Word怎么转?2026年图片转文档完整方法与工具对比
日常工作中,我们经常需要将拍摄的照片、截图或扫描的纸质文件转换成可编辑的Word文档。无论是转录会议笔记、整理手写资料,还是数字化办公文件,高效的转换工具能显著提升工作效率。本文将详细介绍多种图片转word文档的方法,帮你找…...
手把手图解:用Wireshark抓个包,带你‘看见’一次IMS注册和SIP会话的全过程
手把手图解:用Wireshark抓个包,带你‘看见’一次IMS注册和SIP会话的全过程 通信工程师的日常工作中,最令人着迷的莫过于将抽象的网络协议转化为可视化的数据流。当终端设备向IMS核心网发起注册并建立语音会话时,背后究竟发生了什么…...
5分钟上手TegraRcmGUI:Windows平台最简单的Switch注入工具终极指南
5分钟上手TegraRcmGUI:Windows平台最简单的Switch注入工具终极指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是专为Nintendo S…...
ViGEmBus:让Windows游戏外设兼容性不再是难题
ViGEmBus:让Windows游戏外设兼容性不再是难题 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过心爱的游戏手柄在Windows上无法被…...
新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案
新闻传播论文降AI工具免费推荐:2026年新闻传播毕业论文AIGC超标免费4.8元达标完整方案 帮室友处理过新闻传播论文降AI,前前后后试了四款工具,最后固定在嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率99.2…...
做了二十一年程序员,我终于活成了“搞钱不丢人”的大叔
昨晚十二点半,我关掉了 IntelliJ IDEA。窗外的小区已经安静得只剩下路灯了,我起身活动了一下僵硬的颈椎,发出一声轻微的脆响。二十一年前,我还是个刚毕业、只会用 C 语言打印九九乘法表的小伙子;二十一年后,…...
【2026年华为暑期实习(AI)-5月20日-第二题- LLM 多源语料分级清洗预算分配】(题目+思路+JavaC++Python解析+在线测试)
题目内容 某 L L M LLM LLM 预训练团队从 N N N 个数据源收集语料,每个数据源 i i...
