Oracle执行计划管理 - SPM

news2024/11/23 15:40:58

https://blog.51cto.com/lhrbest/3246884

目录

Oracle优化器辅助手段的发展

SPM需求背景

SPM重要构成

SQL计划基准捕获

如何创建SQL计划基准

如何查看SQL计划基准

SQL计划基准选择

执行计划的三个属性

如何选择SQL计划

SQL计划基准发展

SQL计划基准发展的三种选择

如何发展SQL计划基准

使用和管理SQL管理库

初始化参数

管理SQL管理库的空间使用

Oracle优化器辅助手段的发展
Oracle 8:hint
Oracle 8i&9:stored outline - 存储提纲,将调好的执行计划存入outline(使用Hints生成的执行计划),在不修改原SQL语句的情况下,可指定某条语句使用outline。效果同Hints,区别是不修改原SQL语句。
Oracle 10:sql profile - 在不修改原SQL语句的情况下,为特定的SQL指定优化器的一些信息,从而导致优化器生成更为合理的SQL执行计划,达到不修改SQL文本就可以改变并执行计划的目的。
Oracle 11:sql plan management (SPM)
SPM需求背景
任何数据库应用程序的性能在很大程度上都依赖于查询执行,尽管Oracle优化器无需用户干预就可以评估最佳计划,但是SQL语句的执行计划仍可能由于一下多种原因发生意外更改:版本升级、重新收集优化器统计信息、改变优化器参数或模式/元数据定义。由于无法保证计划始终向更好的情况改变,如果在环境变化时能够维持当前执行计划不变,或者只向更好的情况改变,将是最理想的解决方案。

SPM重要构成
SQL 计划管理 (SPM) 确保运行时性能永远不会因为执行计划的更改而降低。为了确保这点,只使用已接受(受信任)的执行计划;跟踪任何计划发展并随后对其进行评估,如果新计划未造成运行时性能改变或运行时性能得到提高,则接受新计划为经验证的计划。

SQL计划管理由三部分组成:SQL计划基准捕获,SQL计划基准选择,SQL计划基准发展

SQL计划基准捕获
创建SQL计划基准,包含所有SQL语句的受信任的执行计划(ACCETPED=YES)。

如何创建SQL计划基准
包含两种方式

自动捕获执行计划,逻辑见图1-1


 
批量加载执行计划,包含四种技术

针对给定的SQL调优集(STS)加载执行计划
从存储大纲加载执行计划
使用游标缓存中目前的执行计划
从临时表解压缩现有的SQL计划基准
如何查看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 > 500
 
SQL_PLAN_d9zsu6rdznqvgdbd90e8e SYS_SQL_d4ff1a35dbfa5b6f       YES YES NO
sqlplus@e2c90ae100ab (TNS V1-V3)
select * from t1 where user_id > 100
SQL计划基准选择
执行计划的三个属性
ENABLED - 表示计划已启用,可供优化器使用,若计划未设置未ENABLED,则优化器不考虑此计划。
ACCEPTED - 表示该计划已被验证为有效计划,若计划未验证为ACCEPTED,则优化器不考虑此计划。
FIXED - 固定计划,表示优化器只会考虑标记为FIXED的执行计划,且从中选择cost最低的固定计划。
如何选择SQL计划
逻辑见图1-1

**注意这里每次重新计算cost的代价不大,因为执行计划是已知的,优化器不必遍历所有的可能,只需根据算法计算出已知计划的cost便可。

SQL计划基准发展
SQL计划基准发展的三种选择
仅当其性能比现有SQL计划基准更佳时才接受新计划,逻辑如下图
不进行性能验证就接受新计划
运行性能比较并生成报告,但不发展新计划
如何发展SQL计划基准
逻辑见图1-2

使用和管理SQL管理库
初始化参数
optimizer_capture_sql_plan_baselines - 控制可重复SQL语句的新SQL计划基准的自动捕获,默认设置为FALSE
optimizer_use_sql_plan_baselines - 控制SQL计划基准的使用,启用后,优化器在SQL计划基准中寻找正在编译的SQL语句的计划,如果找到,优化器会计算各个计划的性能开销,然后选择开销最低的计划。默认设置为TRUE
管理SQL管理库的空间使用
管理库包括语句日志、计划历史记录和SQL计划基准。

存储:SQL管理库是数据库字典的组成部分,存储在SYSAUX表空间中。SQL管理库默认占用不超过SYSAUX表空间的10%,可设置为1%-50%。每周检测,若超过该限制,则会告警。

清理:每周定期清理执行计划,默认超过53周未使用的计划都会被清理,可设置为5-523周。
————————————————
版权声明:本文为CSDN博主「angeling2009」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/angeling2009/article/details/115211535

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在外包干了三年,我废了……不吹不黑!

没错,我也干过外包,一干就是三年,三年后,我废了…… 虽说废的不是很彻底,但那三年我几乎是出差了三年、玩了三年、荒废了三年,那三年,我的技术能力几乎是零成长的。 说起这段三年的外包经历&a…

CTFShow-电子取证篇Writeup

CTFShow-电子取证篇Writeup 套的签到题:JiaJia-CP-1:JiaJia-CP-2:JiaJia-CP-3: CTFShow 平台:https://ctf.show/ 套的签到题: JiaJia-CP-1: 这是部分人熟知的刘佳佳同学的电脑,她…

JavaWeb-Servlet的学习

Servlet 简介 Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。 使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容。 Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义S…

SpringBoot 整合 ES 进行各种高级查询搜索

数据准备 因为本文都是数据的搜索&#xff0c;所以我们需要在我们的es服务器里先插入一些数据以供我们后面使用 esUserService public interface EsUserService extends ElasticsearchRepository<User, Integer> {}RestController public class EsController {Autowir…

HUSTOJ中添加初赛练习系统

文章目录 0. 基于hustoj二开的初赛练习系统&#xff0c;QQ4705852261. 主界面2. 练习界面3. 模拟考试界面4. 查看试卷回放5. 后台操作界面6. 后台试题分类-列表7.后台试题-列表8. 后台试题-添加9. 后台试卷结构-设置 0. 基于hustoj二开的初赛练习系统&#xff0c;QQ470585226 …

Requests请求库的使用

Request请求库 爬虫运行原理Requests请求库安装环境 Requests库的使用状态码网页内容 爬虫运行原理 首先回顾一下爬虫运作的基本原理&#xff08;下面是比较正式的书面语&#xff09;&#xff1a; 爬虫是一种自动化程序&#xff0c;用于从互联网上获取信息&#xff0c; 发起请…

蓝牙耳机啥牌子好?发烧友力荐五大超高性价比蓝牙耳机

预算有限的情况下&#xff0c;性价比是我们在购物时的主要衡量维度&#xff0c;挑选蓝牙耳机时也不例外&#xff0c;那么你知道哪些蓝牙耳机性价比最高吗&#xff1f;不懂的话可以看看老烧我整理的超高性价比蓝牙耳机推荐&#xff0c;了解蓝牙耳机啥牌子好。 一、JEET Air 2 蓝…

数据结构总结4:树、二叉树

后续会有补充 树 树是一种非线性的数据结构&#xff0c;是由n(n>0)个有限结点组成一个具有层次关系的集合。 1.有一个特殊的结点&#xff0c;称为根结点&#xff0c;根节点没有前驱结点 2.树是递归定义的 满足树的条件&#xff1a; 1.子树不相交 2.除了根结点外&#xff0…

白盒测试:如何进行代码级别的测试?

01、什么是白盒测试 白盒测试也称结构测试&#xff0c;透明盒测试。主要用于单元测试阶段&#xff0c;代码和逻辑的测试&#xff0c;重点复杂的测试&#xff0c;是一种测试用例设计方法&#xff0c;不同于黑盒测试&#xff0c;白盒测试是可以看到内部代码如何运作的&#xff0…

PDF.js实现按需加载pdf文件-包含前后端开发源码和详细开发教程

PDF.js实现按需加载pdf文件 说明前言前端项目分片加载的效果前端项目结构项目运行与访问 后端项目项目结构核心代码实现注意事项 项目源码 说明 本文主要是介绍pdf.js的前后端项目的实现&#xff0c;包含可直接运行的源码。由于本人偏向于后端开发&#xff0c;因此前端的vue方…

学习C这么久了,main函数的这三个参数你见过吗?

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f427;引例1&#x1f427;引例2 &#x1f426;认识环境变量&#x1f514;环境变量的概念&#x1f514;常见的环境变量&#x1f514;和环境变量相关的指令 &#x1f426;main函数的第三个参数&#x1f514;如何通过代…

Django SQL注入漏洞复现 (CVE-2022-28347)

漏洞简介 在Django 2.2 的 2.2.28 之前版本、3.2 的 3.2.13 之前版本和 4.0 的 4.0.4 之前版本中的 QuerySet.deexplain() 中发现了SQL注入问题。这是通过传递一个精心编制的字典&#xff08;带有字典扩展&#xff09;作为**options参数来实现的&#xff0c;并将注入负载放置在…

这个插件厉害!Tapdata 格式的 api 也可以导入了

Tapdata 是干嘛的&#xff0c;大家都知道的吧&#xff1f;我简单介绍一下 Tapdata 是自带 ETL 的实时数据服务平台&#xff0c;通过把企业核心数据实时集中到中央化数据平台的方式并通过 API 或者反向同步方式&#xff0c;为下游的交互式应用、微服务或交互式分析提供新鲜实时的…

js逆向-阿里系某688参数sign分析

声明 本文仅供学习参考&#xff0c;如有侵权可私信本人删除&#xff0c;请勿用于其他途径&#xff0c;违者后果自负&#xff01; 如果觉得文章对你有所帮助&#xff0c;可以给博主点击关注和收藏哦&#xff01; 前言 目标网站&#xff1a;aHR0cHM6Ly93d3cuMTY4OC5jb20v 接…

html访问图片资源403问题

问题&#xff1a;图片403 页面不渲染 单独打开图片链接在浏览器却能正常查看 解决办法&#xff1a; 1.数据库中全局下载该字段链接&#xff0c;将图片存到制定文件夹&#xff0c;在系统内调用 2.检查页面head中的是否有此句“<metaname“referrer” content“no-referre…

网络模型及网络编程

名词解释 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互联。 一般都叫OSI参考模型&#xff0c;是ISO&#xff08;国际标准化组织&#xff09;组织在1985年研究的网络互连模型。TCP(Transmission Control Protocol)&#xff0c;传送控制协议…

从永远到永远-ElasticSearch

ElasticSearch 1.概述2.入门1.官方地址2.RESTful3.倒排索引4.http请求操作1.索引操作2.document操作1.基本操作2.多条件查询3.区间查询4.完全匹配5.高亮显示6.聚合查询7.映射关系 5.JAVA API1.index操作2.doc操作1.基础操作2.批量操作3.复杂查询 1.概述 结构化数据、非结构化数…

C/C++函数指针和回调函数

一、函数指针 在讲回调函数之前&#xff0c;我们需要了解函数指针。 我们都知道&#xff0c;C语言的灵魂是指针&#xff0c;我们经常使用整型指针&#xff0c;字符串指针&#xff0c;结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体但是好像我们一…

springboot+jsp学生平时作业评价系统idea

课程信息管理功能需求主要是对课程信息的管理,包括课程信息的录入、维护、删除&#xff0c;教师可以根据授课计划设定授课进度。学生信息管理功能需求&#xff0c;主要是对学生的基本信息进行管理&#xff0c;教师可以录入学生信息&#xff0c;并可以对学生信息进行维护和删除。…

linux 串口改为固定

在/etc/udev/rules.d 目录下新建定义规则的文件 1. 文件名要按规范写否则改动无效2. 规则文件必须以.rules 结尾3. 规则文件名称必须遵循 xx-name.rules 格式&#xff08;xx 为数字或字母&#xff0c;name 为规则名称&#xff09;&#xff0c;例如 99-serial-ports.rules。4. 规…