一个执行计划异常变更的案例 - 外传之SQL Profile(下)

2023-11-08

之前的几篇文章:
《一个执行计划异常变更的案例 - 前传》
《一个执行计划异常变更的案例 - 外传之绑定变量窥探》
《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》
《一个执行计划异常变更的案例 - 外传之rolling invalidation》
《一个执行计划异常变更的案例 - 外传之聚簇因子(Clustering Factor)》
《一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法》
《一个执行计划异常变更的案例 - 外传之AWR》
《一个执行计划异常变更的案例 - 外传之ASH》
《一个执行计划异常变更的案例 - 外传之SQL AWR》
《一个执行计划异常变更的案例 - 外传之直方图》
《一个执行计划异常变更的案例 - 外传之SQL Profile(上)》


上篇文章介绍了Automatic类型的SQL Profile,这种类型的SQL Profile隐患就是未锁定执行计划,只是对统计信息进行了一些修正,一旦表统计信息出现了一些波动,就可能出现错误的修正。


为了解决这种问题就可以尝试Manual类型的SQL Profile,我们来看下他是如何不变更原文的情况下,调整执行计划,并做到可以稳定执行计划的目的。


为了创建Manual类型的SQL Profile,我们需要使用MOS(All About the SQLT Diagnostic Tool (文档 ID 215187.1))中可下载的一个脚本coe_xfr_sql_profile.sql。

我们依旧采用上篇文章中使用的测试表t1和t2,数据量、索引和统计信息收集均相同。使用如下SQL执行计划不是最优的,

这里写图片描述


通过上篇文章的分析,我们知道这才是最优的执行计划,

这里写图片描述


首先查询这两条SQL对应的sql_id,

这里写图片描述


查询这两个sql_id对应的plan_hash_value,

这里写图片描述


执行coe_xfr_sql_profile.sql脚本,输入参数为上面第一次执行的SQL语句(即需要优化的)对应的sql_id和plan_hash_value,

这里写图片描述


输出结果中含有一个脚本,命名格式就是“coe_xfr_sql_profile_(sql_id)_(plan_hash_value).sql,

这里写图片描述


打开脚本可以看见其注释,说明他可以创建一个自定义的SQL Profile,

这里写图片描述


接着我们对使用正确执行计划的SQL执行脚本,

这里写图片描述


同样生成了一个脚本,

这里写图片描述


我们用正确的执行计划对应的脚本中HINT部分,

这里写图片描述


替换错误执行计划对应的脚本中HINT部分,

这里写图片描述


同时将下面这个参数force_match的默认值FALSE改为TRUE,意思是针对不同文本值的SQL,可以重用此SQL Profile,

这里写图片描述


然后执行此脚本,

这里写图片描述


此时就创建了一个Manual类型的SQL Profile。我们看下效果,重新执行SQL,

这里写图片描述
可以看出执行计划已经是最优的,而且Note部分说明已经使用了SQL Profile。


此时我们再次将t1表优化器认知的数量改为500万,

这里写图片描述


Automatic类型的SQL Profile此时就会由于缩放错误,再次选择错误的执行计划,我们看下这种Manual类型的SQL Profile,

这里写图片描述

看出仍旧使用的正确执行计划,证明了这种类型的SQL Profile是可以锁定正确执行计划。


上面我们将force_match参数值设为了TRUE,看下有什么作用,

这里写图片描述
我们将%ABC%换为了%ZZZ%,仍旧采用了正确的执行计划。


当然,如果SQL语句变了,意味着上述手工创建的SQL Profile就不能用了,除非再次创建对应的SQL Profile,

这里写图片描述


总结:

和上篇文章介绍的Automatic类型的SQL Profile相比,Manual类型的SQL Profile的创建过程要复杂一些,但其可以不改SQL的前提下,调整执行计划,最重要的是他能稳定执行计划,不会因为统计信息波动等问题,导致选择错误的执行计划,对于一些短期内不能改应用调整SQL的场景,我们可以选择合适的SQL Profile类型进行执行计划的调整操作。

欢迎关注我的个人微信公众号:bisal的个人杂货铺
这里写图片描述

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7192724/viewspace-2133329/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7192724/viewspace-2133329/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个执行计划异常变更的案例 - 外传之SQL Profile(下) 的相关文章

  • 百万并发服务器设计

    文章目录 前言 1 改造ntyreactor 2 如何管理eventblock 创建一个eventblock 查找对应fd在那个eventblock上 具体使用 3 总结 前言 本文的基础以及使用的代码模型都继承自上一篇文章 所以请先详细阅
  • 大模型时代下做科研的四个思路

    背景 在模型越来越大的时代背景下 如何利用有限的资源做出一些科研工作 四个方向 1 Efficient PEFT 提升训练效率 这里以PEFT parameter efficient fine tuning 为例 2 Existing st
  • linux查看磁盘IO,网络IO 总结

    一 linux查看磁盘IO 网络 IO可用的命令 1 top 监控整体服务器 cpu 内存 磁盘 网络等 2 dstat d 查看当前磁盘每秒的读取 写入量 单位K 3 dstat r 查看当前磁盘随机的读IOPS 写IOPS 4 dsta
  • 一款简单的角度计算Python包:PyAngle

    一款简单的角度计算Python包 PyAngle GitHub仓库 gzn00417 PyAngle PyPI项目 PyAngle A simple package for angle calculation Use pip install
  • ubuntu下载的国内镜像

    阿里云镜像
  • 惊爆GPT OpenAPI的调用以及API内的参数详解

    开篇 随着人工智能技术的飞速发展 自然语言处理技术 NLP 在过去几年也取得了突飞猛进的突破 在这个过程中 一个重要且可称为颠覆者的模型 GPT 3 第三代生成式预训练 Transformer 模型 的诞生 无疑大大加速了 NLP 领域的前
  • 以太坊智能合约安全编程最佳实践smart-contract-best-practices

    https github com ConsenSys smart contract best practices Ethereum Contract Security Techniques and Tips The recent attac
  • Web UI自动化测试之Selenium工具篇

    本文大纲截图 一 自动化测试介绍 1 基本介绍 1 1 自动化 概念 由机器设备代替人工自动完成指定目标的过程 优点 1 减少人工劳动力 2 提高工作效率 3 产品规格统一标准 4 规模化 批量生产 1 2 自动化测试 软件测试 校验系统是
  • 今天我抓了个 HTTPS 的包

    之前写过一篇讲 HTTPS 的思想的文章 破玩意 用 HTTPS 传纸条 后来又写了篇用更凝练的语言总体描述了 HTTPS 的主干 叮咚 HTTPS 的分支和主干 想必通过这两篇文章 HTTPS 为什么要这么设计 以及它是用来解决什么问题的
  • Android 使用retrofit解析接口返回的xml格式数据

    直接入正题 需要解析的数据格式为 从数据格式上看 上面都是单个字段的解析 下面则是一个数组 解析过程 1 添加retrofit预返回数据处理类型 2 添加返回数据处理类 也就是后面会用的 在上图中可以看到将xml的数据结构在XmlLogin
  • Matlab实现神经网络(附上100个完整仿真源码+说明文档+数据)

    神经网络是一种模仿人类神经系统 以处理信息为目的的计算模型 它由大量节点 或称神经元 和连接它们的边组成 每个节点代表一个变量 边表示变量之间的关系 在神经网络中 信息通过节点之间的连接传递 并在各个节点之间进行处理和转换 Matlab是一
  • 算法:求最长回文数

    题目 给定一个字符串 s 找到 s 中最长的回文子串 你可以假设 s 的最大长度为 1000 eg 输入 babad 输出 bab 注意 aba 也是一个有效答案 eg 输入 cbbd 输出 bb C 采用动态规划 是学习别人的 但在lee
  • 视频清晰度、色偏以及亮度异常检测

    转自 http blog csdn net kklots article details 12720359 昨天老板临时交代一个活 要求通过算法检测监控设备是否存在失焦 偏色 亮度异常等问题 问题本身不难 在网上查看了一些资料 自己也做了一
  • 谈谈深度学习中的模型集成

    前文已经给出了三种可提升模型性能的方法论 残差连接 正则化和深度可分离卷积 本文提出另一种强大的技术是模型集成 model ensembling 集成是指将一些列不同模型的预测结果汇集到一起 从而得到更好的预测结果 集成依赖于这样的假设 即
  • adb push安装系统应用(并自启)

    1 有root权限 adb push 安装应用 system app或者system priv app 法一 对于多设备连接时用 s devicename选择设备 当adb启动失败时 用adb kill server 和adb start
  • 如何在一台电脑安装多个版本的JDK

    如何在一台电脑安装多个版本的JDK 一 打开JDK下载官网网址 下载链接 在里面选择你想要的版本进行下载 下载方式参考我的上一篇笔记 二 JDK安装路径 我这里装了1 8和17两个版本 可以把这两个不同版本放在一个大的文件夹里 方便操作 也
  • JMETER接口测试_用户登录(MD5加密)

    JMETER接口测试 用户登录 密码MD5加密 1 给整个线程组 添加全局变量 TestPlan gt 线程组 gt 右键 gt ADD Config Element gt User Defined Variables 全局变量的意思 整个
  • Hbuildx创建vue3项目

    静态网站 H5 跳小程序 微信开放文档 一 vue3的试水学习 vue3的项目 可以先尝试普通项目的vue3应用 根据示例来看 是vue3的语法没错了 可以先在这儿试一下基础的的vue3语法 vue的setup 单文件组件 这是vue3的s
  • 英特服务器的spec整数性能,单线程整数运算性能:SPEC CPU2006_商用-中关村在线

    即使在服务器市场也是高核心数的CPU称雄 单线程高性能表现依然值得拥有 它确保在任何情况下都能保证一定的性能发挥 而不是仅仅为了 embarrassingly parallel 易并行计算 软件的 throughput situations
  • Unity遮罩实现汽车后视镜(附效果图)

    话不多说 先上效果图 最近项目有用到Unity实现汽车后视镜功能 网上找了很多例子 比如这篇文章 原理确实如此 但只是在平面上实现 我想改变平面改成汽车后视镜形状 这就出现了问题 镜子效果变扭曲 我想是因为相机投射是矩形 如果你改变平面形状

随机推荐

  • 机器学习之梯度下降(BGD,SGD, MBGD)

    梯度下降 批量 梯度下降法 BGD 随机梯度下降 SGD 小批量梯度下降法 MBGD 梯度下降 批量 梯度下降法 BGD 1 递推公式推导过程 通过多项式对函数进行逼近的方法得到 f x f
  • 阿里CDN技术

    构建高效 安全的CDN 阿里CDN核心技术揭秘 阿里云 核心系统部 朱照远 叔度 大纲 总览 性能优化 安全防御 展望 阿里自身面对的技术挑战 2012年淘宝 天猫的交易额为11600亿元人民币 超过Amazon与eBay之和 三个网站流量
  • SPI接口详细介绍

    1 概述 SPI Serial Peripheral Interface 是串行外围设备接口 是一种高速 全双工 同步的通信总线 常规只占用四根线 节约了芯片管脚 PCB的布局省空间 现在越来越多的芯片集成了这种通信协议 常见的有EEPRO
  • MySQL基础篇-第16章_变量、流程控制与游标

    第16章 变量 流程控制与游标 讲师 尚硅谷 宋红康 江湖人称 康师傅 官网 http www atguigu com 1 变量 在MySQL数据库的存储过程和函数中 可以使用变量来存储查询或计算的中间结果数据 或者输出最终的结果数据 在
  • python3 flask接收数据处理

    from flask import Flask import time app Flask name app route def index return Hello pyhon app route time def t now time
  • WeBASE-Front中间件搭建

    WeBASE Front中间件搭建 简介 WeBASE WeBank Blockchain Application Software Extension 是在区块链应用和FISCO BCOS节点之间搭建的一套通用组件 围绕交易 合约 密钥管
  • vector和list有什么区别?分别在什么场景下应用?

    Vector 顺序表 优点 和数组类似开辟一段连续的空间 并且支持随机访问 所以它的查找效率高其时间复杂度O 1 缺点 由于开辟一段连续的空间 所以插入删除会需要对数据进行移动比较麻烦 时间复杂度O n 另外当空间不足时还需要进行扩容 Li
  • 基础路由概念及配置

    前言 一 路由的概念 1 路由的分类 2 路由表的作用 二 中小型企业路由规划 1 静态路由规划介绍 2 静态路由规划 3 默认路由规划 4 浮动路由规划 总结 前言 路由就是源主机到目标主机的转发过程 一 路由的概念 1 路由的分类 1
  • 误删除oracle datafile,无法打开数据库

    1 在oracle open方式下 直接从OS上删除了datafile文件 rm u02 rmants dbf 2 数据库关闭后 无法打开数据库 只能到mount状态 SQL gt alter database open alter dat
  • 批量操作关联事务没有滚机制怎么办?交给递归就好了!

    最近遇到一个问题 需要批量修改Nginx配置文件 并分别执行Reload操作 文件更新和reload是lua脚本完成的功能 java后台可以直接调动接口 但问题是需要批量update并分别reload 而且没有事务控制 也就是说在更新第十条
  • jmeter-常用的几种参数化

    jmeter常见的几种参数化方式 jmeter 的csv 数据文件设置 线程组 gt 配置元件 gt Csv数据文件配置 Filename 文件名 File encoding 编码格式 variable Names 参数名称 后面可以使用v
  • C++.将十个整数从小到大顺序排序(冒泡排序法+反向冒泡排序)

    先说一下冒泡排序法的思路 若n个整数则需要进行n 1轮 每轮 将两个相邻元素进行对比 若左大于右则交换 第一轮需要比较n 1次 第二轮n 2次 每轮结束后 最大的元素就会去到最右边 第二轮倒数第二大就会去到最右边 所以 见代码 int ma
  • RIP笔记

    目录 RIP路由信息协议 UDP520端口 RIPNG521端口 RIP使用的算法 贝尔曼 福特算法 RIP的版本 RIP的数据包 RIP的工作过程 RIP的计时器 周期更新计时器 默认30s 失效计时器 默认180s 垃圾回收计时器 默认
  • 【深度学习与计算机视觉】4、反向传播及其直观理解

    四 反向传播及其直观理解 4 1 引言 问题描述和动机 大家都知道 其实我们就是在给定的图像像素向量x和对应的函数 f x f x f x 然后我们希望能够计算
  • 使用决策树对数据进行分类——识别橘子苹果

    代码如下 encoding utf 8 from sklearn import tree 1表示光滑 0表示粗糙 features 140 1 130 1 150 0 170 0 0表示苹果 1表示橘子 labels 0 0 1 1 创建一
  • 手把手教你在win10搭建linux虚拟机

    由于企业几乎都用linux作为生产环境 linux逐渐成为了工程师的必学知识 本文将带你如何在安装 虚拟机 在虚拟机中安装centOS linux的一个发行版 以及如何在 linux安装docker 并使用docker安装mysql red
  • Playing with ptrace, Part II

    Playing with ptrace Part II From Issue 104 December 2002 Dec 01 2002 By Pradeep Padala in SysAdmin In Part II of his ser
  • Hyperledger Fabric官方文档——Introduction

    研究生一直在折腾区块链这方面的东西 翻来覆去感觉Hyperledger Fabric是个挺有前景的 怎么说呢 方向吧 自己脑子里想的东西全让它实现了 又觉得难过又觉得开心 超级账本值得学习的地方有很多 又打算把官方文档翻出来读一遍 因为英语
  • fastjson 很好,但不适合我!

    Java指南 https java family cn FastJson 在国内的热度还是挺高的 受到了很多开发者的喜欢 不过 我自己倒没有在项目中用过 我记得刚工作那会新做的一个项目有明确规定禁止使用 FastJson 昨天看到一篇关于
  • 一个执行计划异常变更的案例 - 外传之SQL Profile(下)

    之前的几篇文章 一个执行计划异常变更的案例 前传 一个执行计划异常变更的案例 外传之绑定变量窥探 一个执行计划异常变更的案例 外传之查看绑定变量值的几种方法 一个执行计划异常变更的案例 外传之rolling invalidation 一个执