上海涛德顾问学院

上海涛德顾问学院 门户 查看主题

Oracle SQL分析的过程

发布者: 涛德教育 | 发布时间: 2014-5-31 13:13| 查看数: 45823| 评论数: 0|帖子模式

作者:涛德顾问学院技术团队
SQL分析(也叫解析,英文SQL Parse)是 SQL 语句处理中的一个阶段(用于生成跟SQL有关的执行计划就发生在这个阶段)。当我们在应用程序中发出一条SQL 语句时,会对 Oracle DB 发出一个分析调用。在分析调用过程中,Oracle DB 会执行下列操作:

Oracle SQL解析

Oracle SQL解析
1检查语句的语法和语义是否有效
2确定发出语句的进程是否有运行语句的权限
3为语句分配一个专用 SQL 区域
4.1软解析确定在库高速缓存(共享池中)中是否已存在共享 SQL 区域(该区域包含语句分析后的表示形式)。如果已存在,则用户进程使用此分析后的表示形式,并立即运行语句。

4.2硬解析如果不存在,则 Oracle DB 生成语句分析后的表示形式,用户进程在库高速缓存中为语句分配一个共享 SQL 区域,并将语句分析后的表示形式存储在该区域中。



注:
SQL 语句发出分析调用的应用程序与实际分析语句的 Oracle DB 之间的差异。
应用程序发出的分析调用将 SQL 语句与某个专用 SQL 区域关联起来。语句与专用 SQL 区域关联之后,可以重复运行该语句,不需要应用程序发出分析调用。

Oracle DB 的分析操作会为 SQL 语句分配一个共享 SQL 区域。为语句分配了共享SQL 区域后,可以重复运行该语句,无需重新分析。

相对于执行来说,分析调用和分析的成本会高得多,因此,请尽可能少执行它们。
注:虽然分析某个 SQL 语句会验证该语句,但分析只能找出可在语句执行之前发现的错误。因此,某些错误可能无法通过分析发现。例如,只有在执行阶段才会发觉并报告数据转换错误或数据错误(例如,尝试在主键中输入重复的值)和死锁这类错误或情形。

最新评论

上海涛德顾问学院 ( 沪ICP备14006824号 )  

GMT+8, 2018-12-15 02:37 , Processed in 0.216711 second(s), 30 queries , Gzip On.

Top Data World

回顶部