sql执行计划[Oracle] 变量绑定-程序员宅基地

技术标签: 人工智能  数据库  

查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!

    

Parent-Child cursor (父子游标)

    

父游标:只要SQL语句文本相同,它们就对应同一个parent cursor。

    

子游标:在某些情况下,虽然SQL语句的文本相同,但是因为其它因素不同(这些因素可以在视图V$SQL_SHARED_CURSOR中查看),致使产生不同的child cursor。(重新生成child cursor,也就意味着一次硬剖析)

    


    

cursor_sharing

    

对于是不是应用绑定变量这个问题,最好是交给应用程序决议,在数据库层面是很难正确判断。(这也是为什么cursor_sharing参数默认值为exact)

    

但是,有些时候,由于应用程序没有正确应用绑定变量,致使数据库性能问题,又因为此时系统已上线,要改应用代码有很多的阻力(大多都是人为的因素)。为此,Oracle提供了应急(过后弥补)方案,可以在数据库级别强制应用绑定变量。

    

当cursor_sharing=force时,对于只有谓词条件不一样的SQL语句,Oracle统统都认为是一样的。但是这样会有一个问题,就是可能后续的执行计划不是最优。为了解决这个问题,可以设置cursor_sharing=similar,这样如果谓词条件的变更可能生成不同的执行计划,Oracle都会进行硬剖析(生成child cursor)。

    

但是,设置 cursor_sharing=similar要非常当心,因为有很多bug,需要经过充分的测试才能在生产库上修改。
    每日一道理
人的生命似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花。

    


    

Bind Peeking (变量窥视)

    

从Oracle9i开始,Oracle在第一次剖析SQL(hard parse)时,如果SQL上有变量绑定,会查看这个变量的值,以便于更精确的指定执行计划;但在后续的分析中(soft parse),将不会理睬这个变量的值。

    


    

实用场景
  • 执行计划几乎不转变(oltp)
  • 大量的并发
  • 大量的除谓词外几乎相同的SQL。
不实用场景
  • 执行计划会随变量值的变更而转变。
  • 少许的SQL(OLAP).

    


    

ACS (Adaptive Cursor Sharing)

    

 

    Oracle11g用于解决变量绑定带来的负面影响,通过不断视察bind的值,来决议新的SQL是不是重用之前的执行计划,解决绑定变量致使后续执行计划稳定的问题。

    缺点

    

  • 更多的硬分析
  • 产生更多的子游标,需要更多的内存。
  • 消耗更多的CPU

    


    

绑定变量的实用场景

    

实用于OLTP
  • 用户并发很高
  • 表中有主键
  • 操纵的数据少
  • 执行计划稳定
  • SQL的重复率高
不实用于OLAP
  • 执行计划多变
  • 并发用户少
  • SQL剖析对系统性能影响小

    

 

文章结束给大家分享下程序员的一些笑话语录: 人工智能今天的发展水平:8乘8的国际象棋盘其实是一个体现思维与创意的强大媒介。象棋里蕴含了天文数字般的变化。卡斯帕罗夫指出,国际象棋的合法棋步共有1040。在棋局里每算度八步棋,里面蕴含的变化就已经超过银河系里的繁星总数。而地球上很少有任何数量达到这个级别。在金融危机之前,全世界的财富总和大约是1014人民币,而地球人口只有1010。棋盘上,所有可能的棋局总数达到10120,这超过了宇宙里所有原子的总数!经典语录网

--------------------------------- 原创文章 By
sql和执行计划
---------------------------------

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34025051/article/details/86384916

智能推荐

Django(18)聚合函数-程序员宅基地

文章浏览阅读112次。前言orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum、Avg、Count、Max、Min,接下来我们逐个介绍聚合函数所有的聚合函数都是放在django.db.models下面。并且聚合函数不能够单独的执行,聚合函数是通过aggregate方法来实现的。在说明聚合函数的用法的时候,都是基于以下的模型对象来实现的。class Author(models.Model):..._django objects 聚合

webstorm怎样设置自动换行_webstorm 自动换行-程序员宅基地

文章浏览阅读544次,点赞4次,收藏2次。打开webstom,在左上角点击file,选择setting,在弹出的对话框中,左侧shu'xing选择edito,在右边选择General。勾选Soft-wrap……在其后方框中加上。*.* ,如下图所示,接着点击apply,点击ok,然后重启webstorm生效。_webstorm 自动换行

Inside the mind of a master procrastinator(拖延症人群的内心世界)-程序员宅基地

文章浏览阅读2.7k次。So in college,I was a government major,which means I had to write a lot of papers.Now,when a normal student writes a paper,they might spread the work out a little like this.So, you know – you get started maybe a little slowly,but you get enough done_inside the mind of a master procrastinator

C语言 结构体指针类型的全局变量使用_全局结构体指针-程序员宅基地

文章浏览阅读6.8k次,点赞4次,收藏22次。定义结构体文件1 <GlobalVar1.h>/******************************** file: GlobalVar1.h* author: hehl* time: 2019/11/5*******************************/#ifndef __GLOBALVAR1_H__#define __GLOBALVAR1_H__..._全局结构体指针

webRTC(十一):webrtc 实时共享桌面,程序员大厂面试都需要什么-程序员宅基地

文章浏览阅读396次,点赞5次,收藏4次。总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。第三步考察hold业务逻辑的能力,从一个简单的注册页,或者查询页开始,先让说下代码的基本架构,然后需求、性能、可靠性、安全层层加码,看看能不能很快的反馈出解决方案。第二步考察一下知识面,问问http、tcp的基本知识,dns是怎么工作的,或者常用框架的实现原理,看看候选人是不是除了自己的一亩三分地什么都不关心。

springboot 指定配置文件_springboot指定配置文件-程序员宅基地

文章浏览阅读6.9k次。SpringAppication会默认将命令行选项参数转换为配置信息例:启动时命令参数的指定java -jar project.jar --server.port = 9090从命令行指定的配置项的优先级最高,不过你可以通过setAddCommandLineProperties来禁用它SpringApplication.setAddCommandLineProperties(false);外部配置文件Spring程序会按优先级从下面这些路劲来加载application.propert_springboot指定配置文件

随便推点

centos格式化xfs文件系统格式并设置自动启动挂载磁盘_linux 启动挂在磁盘 xfs centos-程序员宅基地

文章浏览阅读979次,点赞6次,收藏7次。快速格式化分区为 XFS 文件系统,强制格式化会删除分区上的所有数据,确保已经备份重要的数据。查看已连接的硬盘列表,主要是设备名称(如 /dev/sda)、分区信息和容量。需要修改为上一步自定义的挂载点)文件以设置开机自动挂载(注意。创建一个目录作为挂载点。运行以下命令以挂载分区。_linux 启动挂在磁盘 xfs centos

比较MYSQL和ElasticSearch的全文搜索差距_使用es模糊查询的效率比mysql快多少-程序员宅基地

文章浏览阅读4.3k次。比较MYSQL和ElasticSearch的全文搜索差距起源实验基础为啥不用别人写好的ES包?实验相关代码实验结果起源商城项目需要根据商品标题或者商品详情,进行模糊查询,在数据量较大的时候,MYSQL进行模糊查询就吃力了,需要使用全文搜索工具,例如使用人数较多的Elasticsearch。为直观比较两者的性能区别,进行了这个实验,并记录下来。实验基础1:MYSQL5.7版本 产品表..._使用es模糊查询的效率比mysql快多少

爬虫逆向爬虫遇到的常见加密算法 整理(安卓逆向 js逆向) 持续更新_8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12-程序员宅基地

文章浏览阅读757次,点赞2次,收藏3次。取盐 算法,消息摘要算法,是对数据进行一系列运算后,截取一部分关键值进行校验。因此运算过程不可逆,无法还原出加密前的 初始文本。消息摘要算法得到的结果长度一般是固定的,无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。一般地,只要输入的文本不同,对其进行摘要以后产生的摘要消息也必不相同,但相同的文本输入必会产生相同的输出。_8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

IDEA -- 普通Maven项目 没法加载相对路径配置文件_idea maven 配置 不跟着项目走-程序员宅基地

文章浏览阅读6.4k次。在网上找到一个IDEA的简体中文的文档...真的很棒.. 感谢作者以及一起制作翻译文档的同学... IntelliJ IDEA 简体中文专题教程--------------------------------------------------------在IDEA 中创建普通Maven 项目之后,可能不需要使用resourcecs目录,存放配置文件。可能想要在其他目录下放置,比如这样子。test..._idea maven 配置 不跟着项目走

javaweb酒店预订管理系统_javaweb酒店预订系统-程序员宅基地

文章浏览阅读421次。本系统完全基于JSP+SSM技术,在系统的设计与开发过程中严格遵守软件工程的规范,运用软件设计模式,从而减少系统模块间的偶合,力求做到系统的稳定性、可重用性和可扩充性。(4)员工管理功能,包括员工列表的查询(此员工也为管理员,只是权限不同);(10)预订管理功能,包括对客户预定信息的编辑、查询与管理;(11)入住管理功能,包括对客户入住信息的编辑、查询与管理;(6)楼层管理功能,包括对楼层信息的编辑、查询与管理;(8)房间管理功能,包括对房间信息的编辑、查询与管理;(2)用户的登陆功能,验证用户名和密码;_javaweb酒店预订系统

【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览_pbr是迪士尼写的吗-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏9次。先放出PBR知识体系的架构图:图很大,建议下载到本地放大查看。这张架构图是这个系列文章的内容框架,而且会随着内容的深入,不断更新。目前是1.0版。系列文章前言基于物理的渲染(Physically Based Rendering , PBR)技术,自迪士尼在SIGGRAPH 2012上提出了著名的“迪士尼原则的BRDF(Disney Principled BRDF)”之后,由于其高度的易用性以及方便的工作流,已经被电影和游戏业界广泛使用。个人了解和研究基于物理的渲染..._pbr是迪士尼写的吗