绑定变量是Oracle解决硬解析的首要利器,能解决OLTP系统中library cache的过度耗用以提高性能。然刀子磨的太快,使起来锋利,却容
易折断。凡事皆有利弊二性,因地制宜,因时制宜,全在如何权衡而已。本文讲述了绑定变量的使用方法,以及绑定变量的优缺点、使用场合。
一、绑定变量
提到绑定变量,就不得不了解硬解析与软解析。硬解析简言之即一条SQL语句没有被运行过,处于首次运行,则需要对其进行语法分析,语
义识别,跟据统计信息生成最佳的执行计划,然后对其执行。而软解析呢,则是由于在library cache已经存在与该SQL语句一致的SQL语句文本
、运行环境,即有相同的父游标与子游标,采用拿来主义,直接执行即可。软解析同样经历语法分析,语义识别,且生成hash value ,接下来
在library cache搜索相同的hash value ,如存在在实施软解析。有关更多的硬解析与软解析以及父游标,子游标请作如下参考:
有关硬解析与软解析,请参考:Oracle 硬解析与软解析
有关父游标、子游标,请参考:父游标、子游标与共享游标
绑定变量
首先其实质是变量,有些类似于我们经常使用的替代变量,替代变量使用&占位符,只不过绑定变量使用:
替代变量使用时为 &variable_para,相应的绑定变量则为 :bind_variable_para
通常一个SQL语句包含动态部分和静态部分,占位符实质是SQL语句中容易发生变化的部分,通常为其条件或取值范围。动态部分在一般情
况下(数据倾斜除外),对执行计划的生成的影响是微乎其微的。故同一SQL语句不同的动态部分产生的执行计划都是相同的。
二、绑定变量的使用
1、在SQLPlus中使用绑定变量
2、PL/SQL块中使用绑定变量
3、在存储过程或包中使用绑定变量
4、在动态SQL中是使用绑定变量
三、绑定变量的优缺点及使用场合
优点:
可以在library cache中共享游标,避免硬解析以及与之相关的额外开销
在大批量数据操作时将呈数量级来减少闩锁的使用,避免闩锁的竞争
缺点:
绑定变量被使用时,查询优化器会忽略其具体值,因此其预估的准确性远不如使用字面量值真实,尤其是在表存在数据倾斜(表上的数
据非均匀分布)的列上会提供错误的执行计划。从而使得非高效的执行计划被使用。
使用场合:
OLTP
在OLTP系统中SQL语句重复执行频度高,但处理的数据量较少,结果集也相对较小,尤其是使用表上的索引来缩小中间结果集,其
解析时间通常会接近或高于执行时间,因此该场合适合使用绑定变量。
OLAP
在OLAP系统中,SQL语句执行次数相对较少,但返回的数据量较大,因此多数情况下倾向于使用权标扫描更高效,其SQL语句执行时
间远高于其解析时间,因此使用绑定变量对于总响应时间影响不大。而且增加生成低效执行计划的风险。即在在OLAP系统中使用字
面量的性能高于使用绑定变量。
注意:
对于实际的数据库对象,如(表,视图,列等),不能使用绑定变量替换,只能替换字面量。如果对象名是在运行时生成的,则需要对其
用字符串拼接,同时,sql只会匹配已经在共享池中相同的对象名。
四、相关参考
Oracle 硬解析与软解析
父游标、子游标与共享游标
启用用户进程跟踪
PL/SQL --> 动态SQL
PL/SQL --> 动态SQL的常见错误
分享到:
相关推荐
Oracle数据库的绑定变量特性及其应用是数据库管理中的一个重要概念,特别是在处理大量数据和优化SQL查询性能时。绑定变量,也称为参数化查询或占位符,是SQL语句中用特殊符号(如“:var”)代替具体值的方式,使得同...
#### 八、绑定变量及其优缺点 - **绑定变量**: 使用变量代替硬编码的值,可以在运行时传递值。 - **优点**: - 减少SQL解析次数,提高性能。 - 增加SQL的安全性。 - **缺点**: - 对于非常规查询可能需要更多配置...
绑定变量及其优缺点** - **定义**: 绑定变量是相对于文本变量而言的,即在 SQL 语句中使用变量而非直接写入条件。 - **优点**: - 减少硬解析,降低 CPU 争用。 - 节省 Shared Pool 空间。 - **缺点**: - 无法...
3. **绑定变量及其优缺点**:绑定变量允许SQL语句在运行时动态填充值,减少了硬解析次数,提高了性能。缺点是在某些情况下可能导致执行计划不稳定。 4. **固定执行计划**:使用hint或通过优化参数如`_optimizer_...
3. ajax、axios 与 fetch 的区别及优缺点:ajax 是传统的发起 HTTP 请求的方法,axios 和 fetch 都是基于 Promise 的请求库,各有其优缺点。 本文总结了 JavaScript 面试题的重要知识点,涵盖了 JavaScript 基础...
闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。 作用域链 作用域链的作用是保证执行环境里有权访问的变量和函数是有序的。作用域链的变量只能向上...
1. **保存`this`的引用**:使用`let that = this`或者`const self = this`等,将类的`this`保存在一个局部变量中,然后在事件回调函数中使用这个变量。这样,即使在回调函数内部,`that`或`self`仍然指向类的实例。 ...
PB 试题及答案(PB要点,简答题,基础题,带答案) PB 是一种强大的客户机——服务器体系结构的应用系统开发工具...使用数据窗口对象的一般方法是首先创建数据窗口对象,然后设置数据源和数据绑定,最后显示数据窗口。
本文将深入探讨这两种编程范式的概念、特点及其在实际软件工程中的应用。 ### 1. 面向对象编程 #### 1.1 概念与特性 面向对象编程是一种编程思想,它将程序中的各种实体视为对象,每个对象都包含状态(属性)和...
在WPF的框架下,控件设计和变量绑定主要依赖数据绑定和命令绑定功能,使得HMI的组态无需编写代码即可完成。例如,DB块控件可以在 Blend 中自定义模板,实现对不同PLC变量的可视化表示。对于Kepware服务器,虽然只能...
1. **SPA(单页面应用)的理解及其优缺点** - **理解**:SPA 在初次加载页面后,通过路由机制在后台更新内容,无需整体刷新页面,提供流畅的用户体验。 - **优点**: - 用户体验好,快速响应,避免页面重载和跳转...
在JavaScript编程中,`innerHTML`属性是一个非常常用的方法,它允许我们方便地获取或设置HTML元素内部的HTML内容。然而,当使用`innerHTML`来...每种方法都有其优缺点,应根据实际项目需求和性能考虑来选择合适的方法。
缺点是消耗资源,如果类的成员变量过多,将会占用比较多的内存资源。 以上是Java中常用的几种设计模式的详细介绍,掌握这些模式对于提升软件开发的质量、提高代码的复用性和维护性有着重要的作用。
本资源摘要信息提供了 Vue 基础面试题及答案的详细知识点总结,涵盖了 Vue 的基本原理、双向数据绑定的原理、MVVM、MVC、MVP 的区别、使用 Object.defineProperty() 的缺点、Watcher 的作用等重要知识点。
1. 回调函数:优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间高度耦合。 2. 时间监听:可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦合”。 3. 发布/订阅:性质与...