我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么 理解ORACLE的游标共享

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么 理解ORACLE的游标共享

这篇文章主要讲解了“怎么 理解ORACLE的游标共享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么 理解ORACLE的游标共享”吧!

游标共享(cursor sharing)指的是share cursor的共享

做到游标共享很简单,使用绑定变量就可以实现,但是会遇到下面两个问题

1、开发人员在开发时,未使用绑定变量,这是如果要用绑定变量,就会大量更改sql.

2、使用了绑定变量,但是由于绑定变量窥探的影响,会使某些解析树和执行计划不合时宜

针对上面两个问题,分别用两种游标共享来解决

1、常规游标共享 ,解决问题1

通过参数cursor_sharing启用系统绑定变量

exact  不启用绑定变量

similar 只对安全的谓语条件启用,所谓的安全,就是执行计划不会随着这个值的变化而发生变化,比如主键列的等值查询,而范围类的查询则是不安全的,比如大于,小于,like ,这是一个过时的值,任何时候都不要设置为这个值

force 启用绑定变量,要在不改代码的情况下,使那些where 字句或者values子句(insert) 共享相同的执行计划和解析,可以用这个值。

2、自适应游标共享

11g中引入了自适应游标共享

bind sensitive 指某个含有绑定变量的目标SQL执行计划可能随着绑定变量输入值的变化而变化。当满足下列三个条件时,目标SQL对应的child cursor 会被标记为bind sensitive .

1)启用绑定变量窥探

2)该SQL使用了绑定变量

3)该SQL是不安全的谓语条件(比如范围查询,目标列有直方图统计信息的等值查询)

bind aware 确定含有绑定变量的目标SQL执行计划会随着绑定变量输入值的变化而变化,满足下列两个条件,目标SQL对应的child cursor 会被标记为bind aware

1)已被标记为bind sensitive

2)该SQL接下来的两次执行,对应的runtime统计信息跟硬解析时的runtime统计信息相比差异较大。

v$sql中的三列:is_bind_sensitive   is_bind_aware  is_shareable

自适应游标共享相关的两个视图:v$sql_cs_statistics   v$sql_cs_selectivity

v$sql_cs_statistics显示指定child_cursor 的runtime 统计信息

v$sql_cs_selectivity 显示指定的,已被标记为bind_aware的child_cursor中存储的含绑定变量的谓语条件对应的可选择率范围。

自适应游标的整体执行过程:

1、sql第一次执行,硬解析,然后根据一系列条件(有没有使用绑定变量,cursor_sharing的值,绑定变量列有没有直方图,等值查询还是范围查询等)来判断是否将child_cursor标记为bind_sensitive,如果已标记,会把执行该SQL的runtime统计信息额外存储在child cursor中

2、第二次执行该SQL,会用软解析,并重用之前的解析树和执行计划

3、第三次执行,如果之前child_cursor已经被标记为bind_sensitive,而且第二次,第三次执行该sql的runtime统计信息和硬解析时的runtime统计信息相差过大,则会重新硬解析该SQL,同时生成一个新的child cursor ,并把该child cursor标记为bind_aware。

4、对于标记为bind aware的sql ,再一次执行时,会根据谓语条件中绑定变量的可选择率来选择硬解析还是软解析。判断条件是,该选择率位于该SQL硬解析时同名谓语条件在v$sql_cs_statistics中的选择率范围内,则用软解析,反之则用硬解析。

感谢各位的阅读,以上就是“怎么 理解ORACLE的游标共享”的内容了,经过本文的学习后,相信大家对怎么 理解ORACLE的游标共享这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么 理解ORACLE的游标共享

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ORACLE游标错乱怎么解决

ORACLE游标错乱的问题通常是由于游标的使用不正确或处理逻辑有误导致的。以下是一些解决该问题的常见方法:检查游标的声明和定义,确保游标的名称和类型与实际使用一致。确保游标的打开和关闭操作正确。在使用游标之前,需要先打开游标,使用完毕后再关
2023-10-24

oracle游标关闭怎么解决

解决 oracle 游标关闭问题的方法包括:使用 close 语句显式关闭游标。在 for update 子句中声明游标,使其在作用域结束后自动关闭。在 using 子句中声明游标,使其在关联的 pl/sql 变量关闭时自动关闭。使用异常处
oracle游标关闭怎么解决
2024-05-30

Oracle中的游标Cursor怎么使用

在Oracle中,游标(Cursor)是一种用于处理结果集的数据库对象。游标可以被用来遍历和操作查询结果集中的行。以下是使用游标的基本步骤:1. 声明游标:在PL/SQL块中使用`CURSOR`关键字声明游标,指定查询语句。```sqlDE
2023-08-15

oracle游标不返回数据怎么解决

当Oracle游标不返回数据时,需要进行以下几个步骤来解决该问题:1. 检查游标是否被正确打开:在使用游标之前,确保游标已经被正确打开。可以使用`OPEN`语句打开游标。2. 检查游标是否有数据:在使用游标之前,可以使用`%FOUND`或`
2023-08-31

windows局域网的共享打印机脱机怎么解决

本篇内容主要讲解“windows局域网的共享打印机脱机怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows局域网的共享打印机脱机怎么解决”吧!局域网的共享打印机脱机的解决方法1.
2023-07-01

怎么理解游戏的Draw Calls

这篇文章主要讲解了“怎么理解游戏的Draw Calls”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解游戏的Draw Calls”吧!Draw Calls是什么?Draw Call仅仅
2023-06-02

怎么解决XP共享打印机连接超过最大值的问题

本篇内容主要讲解“怎么解决XP共享打印机连接超过最大值的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决XP共享打印机连接超过最大值的问题”吧!最近一个朋友的公司的网络打印共享打印出问
2023-06-14

服务器中怎么获取远程机器共享目录的物理路径

这篇文章主要介绍了服务器中怎么获取远程机器共享目录的物理路径,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。第一:依靠135端口,用wmi。像下边的脚本是得到共享目录ttt的物
2023-06-08

Oracle中的死锁怎么理解

本篇内容主要讲解“Oracle中的死锁怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle中的死锁怎么理解”吧!死锁Dead Lock 我们大家最早接触死锁这个概念可能是在操作系统
2023-06-06

阿里云服务器的代理服务器怎么设置不了网络共享

简介在使用阿里云服务器时,有时候我们需要设置代理服务器来实现网络共享。然而,有时候用户可能会遇到无法设置代理服务器的问题。本文将介绍一些常见的原因以及解决方法,帮助您解决阿里云服务器代理服务器设置问题。无法设置代理服务器的原因及解决方法1.安全组配置不正确阿里云服务器的安全组配置对于代理服务器的设置非常重要。如果您的安
阿里云服务器的代理服务器怎么设置不了网络共享
2024-01-01

Win10怎么创建Wifi热点?Win10系统笔记本设置WiFi共享的方法详解

如今,Win10创建Wifi热点非常简单,可以使用的工具非常多,只需要在Win10笔记本中安装使用W编程客栈ifi共享精灵、360安全卫士、金山卫士、鲁大师、116Wifi等软件,就可以轻松的在笔记本创建Wifi热点,让附近的智能手机/平板
2023-06-08

编程热搜

目录