Oracle中SQL解析的流程
原创
©著作权归作者所有:来自51CTO博客作者maclean_007的原创作品,请联系作者获取转载授权,否则将追究法律责任
Oracle中SQL解析的主要流程:
我们说的游标概念比较复杂,它可以是客户端程序中的游标,服务进程中的私有游标,以及服务器端共享池里的共享游标。假设一个游标被打开了,一般来说它的共享游标信息(包括执行计划,优化树等)总是会在SQL AREA里,无需再次软/硬解析。
SESSION_CACHED_CURSORS是Oracle中的一个初始化参数(修改必须重启实例),指定了每个会话缓存的游标上限(保留在PGA中);客户端程序中open cursor的要求仍会被传递给服务进程,服务进程首先扫描自身缓存的游标信息,如果命中则可以避免软解析,也有人称它为“软软解析”。
HOLD_CURSOR是预编译程序中的一个参数,它指定了私有游标是否因该被缓存,这里不做展开。
在分析工具tkprof中hard parse与soft parse被同等对待,都被认为是parse;软解析即会造成parse总数上升。
软解析避免了硬解析过程中的几个步骤,但仍包括了初始化的语法,语义解析并计算语句HASH值与SQL AREA中已有语句进行对比;若匹配则查询优化等昂贵的操作得以避免。
另请注意,10053事件仅在硬解析过程中被触发。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Oracle SQL Parsing Flow Diagram(SQL 解析流程图)
在MOS 上有一篇介绍SQL 解析流程图的文档,参考[ID32895.1]。 截取主要部分内容如下:
sql parsing oracle optimization semantic -
Mybatis源码解析:SQL解析流程
XMLLanguageDriver:默认的LanguageDriver,可以处理动态sql和静态sqlRawLanguageDriv
sql 数据库 database 动态sql 占位符 -
Oracle中的pl/sql
Oracle中的pl/sql
oracle SQL 异常处理 数据库 -
oracle PL/SQL 流程控制
pl/sql
oracle sql 流程控制 -
oracle-sql语句解析类型
语句执行过程:1. 解析(将sql解析成执行计划) 2.执行 3.获取数据(fetch)
oracle sql 数据库 sql语句 缓存 -
mysql sql解析获取血缘流程 mysql解析sql顺序
2.5 SQL解析顺序接下来再走一步,让我们看看一条SQL语句的前世今生。首先看一下示例语句:SELECT DISTINCT< select_list >FROM< left_table > < join_type >JOIN < right_table > ON < join_condition >WHERE< where_con
mysql sql解析获取血缘流程 MySQL的SQL解析顺序 SQL解析总结 SQL解析顺序流程图 SQL解析流程说明