Oracle硬解析和软解析的区别分析建站知识
导读:1建站知识我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。在Oracle中存在两种类型的SQL语句,一类为 DDL语句(数据seo网站优化软件百度seo网站优化。
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。在Oracle中存在两种类型的SQL语句,一类为 DDL语句(数据定义语言),就是每次执行都需要进行硬解析。还有一类就是DML语句,他们会根据情况选择要么进行硬解析,要么进行软解析。
一、摘要
Oracle硬解析和软解析是我们经常遇到的问题,所以需要考虑何时产生软解析何时产生硬解析,如何判断
SQL的执行过程
当发布一条SQL或PL/SQL命令时,Oracle会自动寻找该命令是否存在于共享池中来决定对当前的语句使用硬解析或软解析。
通常情况下,SQL语句的执行过程如下:
Step1. SQL代码的语法(语法的正确性)及语义检查(对象的存在性与权限)。
Step2. 将SQL代码的文本进行哈希得到哈希值。
Step3. 如果共享池中存在相同的哈希值,则对这个命令进一步判断是否进行软解析,否则到e步骤。
Step4. 对于存在相同哈希值的新命令行,其文本将与已存在的命令行的文本逐个进行比较。
这些比较包括大小写,字符串是否一致,空格,注释等,如果一致,则对其进行软解析,转到步骤Step6,无需再次硬解析。
否则到步骤Step5。
Step5. 硬解析,生成执行计划。
Step6. 执行SQL代码,返回结果。
二、软解析
1.下面的三个查询语句,不能使用相同的共享SQL区。尽管查询的表对象使用了大小写,但Oracle为其生成了不同的执行计划
select * from emp; select * from Emp; select * from EMP;2.类似的情况,下面的查询中,尽管其where子句empno的值不同,Oracle同样为其生成了不同的执行计划  seo网站优化;
select * from emp where empno=7369 select * from emp where empno=77883.在判断是否使用硬解析时,所参照的对象及schema应该是相同的,如果对象相同,而schema不同,则需要使用硬解析,生成不同的执行计划
sys@ASMDB> select owner,table_name from dba_tables where table_name like 'TB_OBJ%'; OWNER TABLE_NAME ------------------------------ ------------------------------ USR1 TB_OBJ --两个对象的名字相同,当所有者不同 SCOTT TB_OBJ usr1@ASMDB> select * from tb_obj; scott@ASMDB> select * from tb_obj; --此时两者都需要使用硬解析以及走不同的执行计划声明: 本文由我的SEOUC技术文章主页发布于:2023-05-22 ,文章Oracle硬解析和软解析的区别分析建站知识主要讲述区别,标签,Oracle硬解析和软解析的区别分析建站知网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_4522.html