目录

1、如何工作

2、何时使用


1、如何工作

sql plan baseline 是一个关联sql 语句的对象,设计会影响查询优化器生成执行计划,更具体的说,一个sql baseline包含其中的一些内容,一个或多个执行计划的一组HINTS信息,基本上一个SQL plan baselines被使用会强制使查询优化器对于一个给定的sql语句生成一致的执行计划。


不是所有的HINTS都存储在SQL plan baselines中,有哪些不能存储呢?

SELECT name FROM v$sql_hint WHERE version_outline IS NULL

虽然 众多的HINTS不存储在sql plan baselines中但是不会影响执行计划(如:gather_plan_statistics)。还有一些其他会影响(如materialize和inline),这种结果,一些执行计划不能强制通过sql plan baseline 无需指定hint的模式


sql plan baseline其中一个好处他应用指定的sql语句,不需要修改sql 语句。实际上,sql plan baselines被存储与sql 管理基中,查询优化器自动选择他们,基本的步骤:

  1. 第一:常规方法sql语句被解析,换句话说,查询优化器在没有sql plan baseline的支持下生成一个执行计划
  2. 之后,查询优化使sql语句无大小写敏感并文本中的空格内容可以忽略,sql 语句的结果签名(signature)被计算,进入sql 管理基中被执行,如果一个sql plan baseline有相同的签名被找到,被核对确认sql语句被优化并sql 语句关联的sql plan baseline是相同的,这个核对是必须的因为签名是一个hash 值,随后,可能会有冲突。
  3. 当测试成功,查询优化器验证sql plan baseline是否包含这个生成的执行计划,如果包含并接受的,就执行他
  4. 如果在sql plan baseline存储的被接受是其他执行计划,这个HINTS关联它被使用其他执行计划生成。注意如果这个SQL plan baseline包含若干个执行计划,查询优化器选择最低代价的一个。
  5. 最后,查询优化器核对执行计划是否通过sql plan baseline的信息提供生成所期望的执行计划,如果最后核对被满足,执行计划可以被使用,如果不能满足,这个查询优化器尝试其他接受的执行计划,如果他们都不能重现,他会在没有sql plan baseline重新生成执行计划。

2、何时使用

使用sql plan baselines有两种情况,第一,无论你何时优化sql 语句都不能改变应用(如,在应用中不能把增加hints选项)。第二,你应该考虑何时、怎么的原因使用它,你遇到了麻烦的执行计划不稳定,因为sql plan baselinegs的目标是强制查询优化器从可以接受的执行计划的限制列表中选择一个执行计划,当你明确想限制查询优化器选择一个指定的执行计划。

spm总体说明的更多相关文章

  1. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  2. ABP(现代ASP.NET样板开发框架)系列之1、ABP总体介绍

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  3. MVC5网站开发之一 总体概述

    由于前几次都没能写完,这次年底总算有自由时间了,又想继续捣鼓一下.于是下载了VS 2015专业版(不知为什么我特别钟爱专业版,而不喜欢企业版).由于以前的教训,我这次决定写一个极简的Deom,简到什么 ...

  4. [连载]《C#通讯(串口和网络)框架的设计与实现》- 8.总体控制器的设计

    目       录 第八章           总体控制器的设计... 2 8.1           总控制器的职能... 2 8.2           组装和释放部件... 3 8.3      ...

  5. 163邮箱问题:554 DT:SPM 163 smtp5,D9GowACHO7RNWNdXmXs1Bw--.9035S2

    最近公司需要开发一个自定义邮箱功能,上网查询一下,利用163邮箱发送邮件. 由于163 的反垃圾机制,(坑爹机制.) 一般出现 554有在1)测试中用了test,测试,关键字在主题或者内容里面. 但是 ...

  6. 通读SDWebImage①--总体梳理、下载和缓存

    本文目录 下载操作SDWebImageDownloaderOptions和下载过程实现 下载管理SDWebImageDownloader 缓存SDImageCache SDWebImageManage ...

  7. Linux2.6内核进程调度系列--scheduler_tick()函数1.总体思想

    参考的是ULK第三版,Linux2.6.11.12内核版本. 调度程序依靠几个函数来完成调度工作,其中最重要的第一个函数是scheduler_tick函数,主要步骤如下: /** * 维持当前最新的t ...

  8. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

    很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...

  9. https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU

    https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU

随机推荐

  1. SpringCloud微服务Docker部署

    前两写了两篇,都是为SpringCloud+Docker部署做准备,在部署的时候,不同服务器,不同的Docker容器之间的通信,还好没有掉到坑里去,在公司里用了新技术,还是很开心的,小有成就感,之前一 ...

  2. 6 ZigZig Conversion[M]Z字形变换

    题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...

  3. Tomcat 初探(一) 简介

    简述 大部分入了 Java 开发这个坑的朋友,都需要把自己的网站发布到 Web 服务器上,相信也听过 Tomcat 的鼎鼎大名.Tomcat 是由 Sun 公司软件架构师詹姆斯·邓肯·戴维森开发的 W ...

  4. SQL Server 获取两个日期间的日期

    declare @start datetime declare @end datetime set @start = '2018-01-25' set @end = '2018-02-03' sele ...

  5. 微信小程序和App的UI设计有什么异同吗?

    大家总是把小程序和App放在一起比,因此我也花时间看了一下小程序的开发指南,尤其是UI部分的设计和原则,今天就拿它和苹果的HIG(Human Interface Guidelines)做个比较,其实两 ...

  6. SQL Server-简单查询语句,疑惑篇

      前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开 ...

  7. PHP学习过程中遇到的疑难杂症

    变量当双引号中包含变量时,变量会与双引号中的内容连接在一起:当单引号中包含变量时,变量会被当做字符串输出. Heredoc结构形式首先使用定界符表示字符串(<<<),接着在“< ...

  8. C语言-实现整数倒序输出

    Action() { //实现一个3位数的倒序输出(123输出321) int n; int m=321; n=fun_mod(m,n); lr_output_message("%d&quo ...

  9. Declarative programming-声明式编程-布局约束是一个案例

    声明式编程需要底层或运行时环境支持. 声明式语言的关键词确定了执行的关键控制流. 表述编程语言是说明性的东西:而不是具体的执行方案. 通常他的执行由解释器进行. In computer science ...

  10. 第五章 Python之装饰器

    函数对象 函数是第一类对象:即函数可以当作数据传递 #可以被引用,可以被当作参数传递,返回值可以是函数,可以当作容器类型的元素 #引用 def func(x,y): print(x,y) f=func ...