目录

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. 对python变量的理解

    #!/usr/bin/python class Person: '''some words content or descriptions!''' name='luomingchuan' _age = ...

  2. kafka windows安装 命令行下使用测试

    1.zookeeper安装:   (https://zookeeper.apache.org/releases.html) ①进入zookeeper的相关设置所在的文件目录,例如本文的:D:\bigd ...

  3. mysql_udf_http(根据mysql表自动触发发送http请求)

    下载 tar包wget http://mysql-udf-http.googlecode.com/files/mysql-udf-http-1.0.tar.gz解压tar -vzxf mysql-ud ...

  4. BZOJ 2287 DP+容斥

    思路: 先处理出来f[j]表示这i个物品都可用 填满容量j的方案数 容斥一发 处理出来g[j]=g[j-w[i]] 表示i不能用的时候 填满容量j的方案数 //By SiriusRen #includ ...

  5. 利用bat批处理——实现数据库的自动备份和删除

    之前见别人一直在玩批处理,最近公司也在用,就顺便学习下: 首先创建一个 txt文件 命名BackupDataBase  并修改后缀为.bat 编写两条命令: sqlcmd -S . -E -Q &qu ...

  6. layer.js漂亮的弹出框

    它的官方网站:http://layer.layui.com/ 消息.确认框.ifame.自定义文本.旋转木马,都有按钮,是一款强大的js 弹出框: 以下为本人的简单介绍: layer.open({ t ...

  7. shopping car 3.0

    #!/usr/bin/env python# -*- coding: utf-8 -*-# @File : 购物车3.0.py# @Author: Anthony.waa# @Date : 2018/ ...

  8. iOS性能优化未阅文章归档

    https://www.aliyun.com/jiaocheng/349583.html https://www.2cto.com/kf/201706/648929.html 理解UIView的绘制 ...

  9. javascript: 基于原型的面向对象编程

    Douglas Crockford指出javascript是世界上最被误解的编程语言.由于javascript缺少常见的面向对象概念,许多程序猿认为javascript不是一个合适的语言.我在做第一个 ...

  10. Unity局部坐标系与世界坐标系的区别

    局部坐标旋转是指以父物体为参考,进行旋转. 而世界坐标系以"坐标陀螺"来进行旋转. 类似的情况例如: 东.南.西.北.是世界坐标系. 前.后.左.右是局部坐标系