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

如何理解oracle硬解析、软解析、软软解析

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

如何理解oracle硬解析、软解析、软软解析

如何理解oracle硬解析、软解析、软软解析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

硬解析和软解析有相同的一步,而软软解析与硬解析、软解析完全不一样。先来说下理论上的东西,然后来做个实验。

硬解析过程:

    1.语法、语义及权限检查;

    2.查询转换(通过应用各种不同的转换技巧,会生成语义上等同的新的SQL语句,如count(1)会转为count(*));

    3.根据统计信息生成执行计划(找出成本最低的路径,这一步比较耗时);

    4.将游标信息(执行计划)保存到库缓存。

软解析过程:

    1.语法、语义及权限检查;

    2.将整条SQL hash后从库缓存中执行计划。

    软解析对比硬解析省了三个步骤。

软软解析过程:

    要完全理解软软解析先要理解游标的概念,当执行SQL时,首先要打开游标,执行完成后,要关闭游标,游标可以理解为SQL语句的一个句柄。

在执行软软解析之前,首先要进行软解析,MOS上说执行3次的SQL语句会把游标缓存到PGA,这个游标一直开着,当再有相同的SQL执行时,则跳过解析的所有过程直接去取执行计划。

SQL> drop table test purge;
SQL> alter system flush shared_pool;
SQL> create table test as select * from dba_objects where 1<>1;
SQL> exec dbms_stats.gather_table_stats(user,'test');

硬解析:
SQL> select * from test where object_id=20;
未选定行
SQL> select * from test where object_id=30;
未选定行
SQL> select * from test where object_id=40;
未选定行
SQL> select * from test where object_id=50;
未选定行

软解析:
SQL> var oid number;
SQL> exec :oid:=20;
SQL> select * from test where object_id=:oid;
未选定行
SQL> exec :oid:=30;
SQL> select * from test where object_id=:oid;
未选定行
SQL> exec :oid:=40;
SQL> select * from test where object_id=:oid;
未选定行
SQL> exec :oid:=50;
SQL> select * from test where object_id=:oid;
未选定行
软软解析:
SQL> begin
         for i in 1..4 loop
         execute immediate 'select * from test where object_id=:i' using i;
         end loop;
         end;
     /
     
SQL> col sql_text format a40   
SQL> select sql_text,s.PARSE_CALLS,loads,executions from v$sql s
        where sql_text like 'select * from test where object_id%'
        order by 1,2,3,4;
SQL_TEXT                                 PARSE_CALLS      LOADS EXECUTIONS
---------------------------------------- ----------- ---------- ----------
select * from test where object_id=20              1          1          1
select * from test where object_id=30              1          1          1
select * from test where object_id=40              1          1          1
select * from test where object_id=50              1          1          1
select * from test where object_id=:i              1          1          4
select * from test where object_id=:oid            4          1          4  

可以看到软解析与软软解析相比,软软解析只是解析一次。

字段解释:
PARSE_CALLS  解析的次数

LOADS 硬解析的次数

EXECUTIONS 执行的次数




SQL执行过程图如下:


如何理解oracle硬解析、软解析、软软解析



关于如何理解oracle硬解析、软解析、软软解析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

免责声明:

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

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

如何理解oracle硬解析、软解析、软软解析

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

下载Word文档

猜你喜欢

Linux硬链接与软链接原理及用法解析

在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。 硬链接概念硬链接(hard link, 也称链接)
2022-06-03

如何进行VS2005软件的理解与分析

如何进行VS2005软件的理解与分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。看来是WebDeployment本身有一定的bug,笔者猜想可能是编码问题造成的,WebDep
2023-06-17

电脑安装软件解析包错误如何解决

本文小编为大家详细介绍“电脑安装软件解析包错误如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“电脑安装软件解析包错误如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。安装软件解析包错误解决方法在百度中
2023-02-21

如何解析Oracle SCN

本篇文章给大家分享的是有关如何解析Oracle SCN,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Oracle中的SCN(system change number)和我们的北
2023-06-06

一文详细解析软考软件设计师

软考软件设计师考试是中国信息通信研究院主管的国家级专业技术资格考试。该考试旨在评价考生是否具备从事软件设计工作所需的基础知识、专业技能以及解决实际问题的能力。具体请见下文。
一文详细解析软考软件设计师
2024-04-20

如何理解haslaylout和bfc解析

这篇文章主要讲解了“如何理解haslaylout和bfc解析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解haslaylout和bfc解析”吧!一、haslaylout 和 bfc
2023-06-08

如何解析String

本篇文章给大家分享的是有关如何解析String,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在java中,String类是一个很特别的类,首先它是一个final类,也就是imm
2023-06-03

如何理解JavaScript预解析及对象

本篇文章为大家展示了如何理解JavaScript预解析及对象,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、预解析1、变量预解析和函数预解析JavaScript 代码是由浏览器中的 JavaScr
2023-06-25

如何解析GZIP

如何解析GZIP,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是GZIP?gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。它是Jean-loupGail
2023-06-10
2024-04-02

什么是系统分析师考试?深度解析软考系统分析师

软考系统分析师,是中国计算机技术职业资格认证的一种。该系统分析师资格认证是由中国信息技术教育认证中心主办,旨在规范和提高IT行业从业人员的专业技能水平,提升IT行业的服务质量和竞争力。具体请见下文。
什么是系统分析师考试?深度解析软考系统分析师
2024-04-25

软考案例分析题的通用答题方法!附2023软考案例分析题及答案解析

  案例分析的通用答题方法,这个适用于软考高级科目-信息系统项目管理师,也可用于软考中级科目-系统集成项目管理工程师。以下看法仅供参考,具体情况考题需要根据考题具体分析。  一、历年考试范围  首先,范围管理、进度管理、成本管理、质量管理,这4大管理都是历年考试的大头,所以全拿下这些对考试的通过有很大帮助。  另外,配
软考案例分析题的通用答题方法!附2023软考案例分析题及答案解析
2024-04-19

【Linux】理解文件系统——软硬链接

我们之前讨论的都是进程和被打开文件的关系,而如果一个文件是没有被打开呢?没有被打开的文件操作系统如何管理? 没有被打开的文件在磁盘上,所以磁盘上有大量的文件,这些文件要被静态管理起来,方便我们随时打开,而做这部分工作的我们称为文件系统。
2023-08-18

编程热搜

目录