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

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&#xff…...

springboot整合tio-websocket方案实现简易聊天

写在最前: 常用的http协议是无状态的,且不能主动响应到客户端。最初想实现状态动态跟踪只能用轮询或者其他效率低下的方式,所以引入了websocket协议,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务…...

《TCP IP网络编程》第十三章

第 13 章 多种 I/O 函数 13.1 send & recv 函数 Linux 中的 send & recv&#xff1a; send 函数定义&#xff1a; #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags); /* 成功时返回发送的字节数&#xff0c;失败…...

驱动开发 day8 (设备树驱动,按键中断实现led亮灭)

//编译驱动 (注意Makefile的编译到移植到开发板的内核) make archarm //清除编译生成文件 make clean ****************************************** //安装驱动 insmod mycdev.ko //卸载驱动 rmmod mycdev 需要在<内核路径>/arch/arm/boot/dts/ 修改 stm32mp157a-fsm…...

DataX将MySQL数据同步到HDFS中时,空值不处理可以吗

DataX将MySQL数据同步到HDFS中时&#xff0c;空值存到HDFS中时&#xff0c;默认是存储为\N&#xff0c;这样会有两个缺点&#xff1a; 会产生歧义&#xff0c;如果MySQL业务数据中有\N数据&#xff0c;那么存储到HDFS上是\N&#xff0c;null值存储也是\N&#xff0c;当用Hive查…...

P3373 【模板】线段树 2(乘法与加法)(内附封面)

【模板】线段树 2 题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面三种操作&#xff1a; 将某区间每一个数乘上 x x x&#xff1b;将某区间每一个数加上 x x x&#xff1b;求出某区间每一个数的和。 输入格式 第一行包含三个整数 n , q , m n,q,m n,…...

实现langchain-ChatGLM API调用客户端(及未解决的问题)

langchain-ChatGLM是一个基于本地知识库的LLM对话库。其基于text2vec-large-Chinese为Embedding模型&#xff0c;ChatGLM-6B为对话大模型。原项目地址&#xff1a;https://github.com/chatchat-space/langchain-ChatGLM 对于如何本地部署ChatGLM模型&#xff0c;可以参考我之前…...

【AltWalker】模型驱动:轻松实现自动化测试用例的生成和组织执行

目录 模型驱动的自动化测试 优势 操作步骤 什么是AltWalker&#xff1f; 安装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之前&#xff0c;要确认自己的测试遵循两个原则&#xff1a; 1、尽量不要干涉原来的代码。从阅读代码的体验来说&#xff0c;不要让你的测试&#xff08;哪怕是一小段if..else...的代码&#xff09;出现在你准备测试的代码中。 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>…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...