`

ORACLE sql 的处理过程

 
阅读更多

ORACLE sql 的处理过程大致如下:
1.运用HASH算法,得到一个HASH值,这个值可以通过V$SQLAREA.HASH_VALUE 查看
2.到shared pool 中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析
3.如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误
4.如果没有语法错误,就进行语义检查,检查该SQL引用的对象是否存在,该用户是否具有访问该对象的权限
5.如果没有语义错误,对该SQL进行解析,生成解析树,执行计划
6.生成ORACLE能运行的二进制代码,运行该代码并且返回结果给用户

硬解析和软解析都在第5步进行
硬解析通常是昂贵的操作,大约占整个SQL执行的70%左右的时间,硬解析会生成执行树,执行计划,等等。
当再次执行同一条SQL语句的时候,由于发现library cache中有相同的HASH值,这个时候不会硬解析,而会软解析,
那么软解析究竟是干了什么呢?其实软解析就是跳过了生成解析树,生成执行计划这个耗时又耗CPU的操作,直接利用生成的执行计划运行
该SQL语句。
下面摘抄eygle深入解析ORACLE 中关于SQL执行过程的描述
  1.首先获得library cache latch,根据SQL的HASH_VALUE在library cache中查找是否存在此HASH_VALUE,如果找到这个HASH_VALUE,称之为软解析,Server获得改SQL执行计划转向第4步,如果找不到共享代码就进行硬解析。
  2.释放library pool cache,获得shared pool latch,查找并锁定自由空间(在bucket 中查找chunk)。如果找不到,报ORA-04031错误
  3.释放shared pool latch,重新获得library cache latch,将SQL执行计划放入library cache中。
  4.释放library cache latch,保持null模式的library cache pin/lock.
  5.开始执行。
Library cache latch可以理解为硬/软解析的时候发生的,因为解析的时候会搜索library cache,所以会产生library cache latch
Library cache pin 是在执行的阶段发生的。

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    4. **游标**:Oracle SQL支持游标,MySQL则不直接支持,需要使用存储过程或临时表来实现类似功能。 5. **函数和操作符**:两者内置的函数和操作符有所不同,例如Oracle的NVL对应MySQL的IFNULL,Oracle的TO_DATE对应...

    Oracle SQL 官方文档

    1. **PL/SQL语言参考**:PL/SQL是Oracle特有的过程化语言,它结合了SQL的查询能力与编程语言的控制结构。此文档详细介绍了PL/SQL的各种元素,如变量、常量、条件语句(IF-THEN-ELSIF)、循环(WHILE, FOR)、异常...

    Oracle SQL高级编程

    需要注意的是,给出的【部分内容】中存在重复的错误,意味着在原始文档中可能存在扫描识别错误,或在文字处理过程中发生了复制粘贴的错误。文档内容的准确性和完整性对于理解和学习Oracle SQL高级编程至关重要。因此...

    OracleSQLDeveloper

    Oracle SQL Developer 是一款由Oracle公司推出的免费数据库管理工具,它为数据库管理员(DBA)和开发人员提供了一个全面的集成环境,以便于管理和操作Oracle数据库。这个工具的强大之处在于其直观的用户界面和广泛的...

    《精通Oracle SQL 第2版》PDF版本下载.txt

    Oracle SQL不仅支持标准SQL语句,还提供了许多扩展功能,使其成为处理复杂数据查询的强大工具。 ### 《精通Oracle SQL 第2版》书籍概述 《精通Oracle SQL 第2版》是一本全面介绍Oracle SQL的高级指南,适合已经...

    ORACLE_SQLDeveloper使用教程

    ### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...

    精通OracleSQL第2版.zip

    9. **PL/SQL编程**:深入PL/SQL,Oracle的面向过程的扩展语言,用于编写复杂的存储过程、触发器和异常处理。 10. **实战案例**:通过实际案例分析,让读者能够在实践中应用所学知识,解决实际问题。 通过阅读...

    OracleSQL必备参考

    Oracle SQL是数据库管理员和开发人员在处理Oracle数据库系统时不可或缺的工具。它是用于查询、更新、操作和管理Oracle数据的强大语言。以下是一些Oracle SQL的关键知识点,这些知识点对于理解和掌握Oracle SQL至关...

    Oracle SQL(SQL for Oracle)

    7. **存储过程和函数**:这些是预编译的SQL和PL/SQL代码块,可以封装复杂的业务逻辑,提高代码复用性和执行效率。 8. **事务和并发控制**:Oracle提供了ACID(原子性、一致性、隔离性和持久性)特性,保证了事务的...

    Oracle的SQL监视工具SQLTracker

    通常,一些较旧的.NET应用程序需要3.5框架才能运行,但SQLTracker的这个版本已经解决了这一依赖性,使得在最新的操作系统上无需额外安装就能直接使用,简化了用户的部署过程。 在Oracle数据库管理中,SQL性能优化是...

    介绍OracleSQL和PLSQL

    在实际应用中,Oracle SQL和PL/SQL通常结合使用,SQL负责数据的CRUD操作,而PL/SQL则负责更复杂的业务逻辑和流程控制。对于数据库管理员和开发者来说,掌握这两门语言是高效管理和开发Oracle数据库的关键。 文件...

    ORACLESQL性能优化.pptx

    在 SQL 优化过程中,需要了解性能管理、性能问题、调整的方法、SQL 优化机制、应用的调整、SQL 语句的处理过程等内容。只有通过深入学习 SQL 语法及各种 SQL 调优技巧,熟悉 SQL 语法、掌握各种内嵌函数、分析函数的...

    oracle sql_tuning

    在Oracle数据库管理中,SQL调优是提升系统...以上知识点只是"Oracle SQL Tuning"的冰山一角,实际调优过程中还需要结合具体环境和业务需求进行深入分析和实践。Oracle SQL优化是一个持续的过程,需要不断学习和调整。

    Oracle SQL 官方教程

    Oracle SQL 官方教程是学习和理解Oracle数据库系统中SQL语言的重要资源,编号为007的教程可能是一个系列教程的一部分。在这个教程中,你将深入掌握如何在Oracle环境中使用SQL进行数据查询、操作、分析以及数据库管理...

    Pro Oracle SQL (2010)

    《Pro Oracle SQL》这本书不仅全面介绍了 Oracle SQL 的基础知识,还深入探讨了如何有效地利用 Oracle 提供的各种高级特性来提高数据处理的效率和安全性。通过学习本书,读者将能够更好地理解和运用 Oracle SQL,为...

    pro oracle sql pdf

    - SQL(Structured Query Language)是数据库管理和数据操作的标准语言,Oracle通过其PL/SQL提供了过程化编程的能力。 - 书名中的“Pro”暗示了书籍内容针对的是对Oracle SQL有一定了解的中级到高级用户,意在使...

    精通Oracle_SQL(第2版)含源码

    3. **高级SQL特性**:书中涵盖了Oracle特有的SQL功能,如PL/SQL过程化语言,游标,递归查询,窗口函数,分析函数,以及在SQL中使用正则表达式等,这些高级特性为复杂的数据处理提供了强大支持。 4. **性能调优**:...

    ORACLE SQL官方教程

    PL/SQL是Oracle的扩展SQL,结合了SQL的查询能力与过程编程语言的特点,用于编写复杂的业务逻辑。 通过本教程,读者将不仅了解SQL的基本语法,还能深入理解Oracle SQL的高级特性,提升数据库管理与开发技能。对于...

    ORACLE SQL入门与实战经典

    4. 使用PL/SQL:PL/SQL是Oracle提供的过程化语言,用于编写复杂的数据库逻辑。熟悉PL/SQL是编写高效存储过程、触发器和函数的关键。 5. 测试和调试:编写SQL后,测试是保证其正确性和效率的重要步骤。同时,了解...

    oraclesql 学习资料

    - **存储过程**:一组预编译的 SQL 语句和 PL/SQL 控制流程语句,可以作为一个单元调用执行。 - 示例(PL/SQL): ```plsql CREATE OR REPLACE PROCEDURE update_employee_salary (p_id IN NUMBER, p_new_salary ...

Global site tag (gtag.js) - Google Analytics