`

解剖SQL语句执行过程

阅读更多

 

文章截取自《品悟性能优化》。

 

 

以例子来说明。

 

一个屡见不鲜的错误:

      假设在一个联机交易系统中,客户并发访问量很大,都要查询不同的员工信息,于是这样写程序:

select * from emp where empno = 1234 ;
...
select * from emp where empno = 4567 ;
...
select * from emp where empno = 7890 ;

     假设已经按empno字段建了索引,还有什么问题吗?答案:单个语句没有任何问题,合在一起就有问题了。 

     上述语句应该修改成这样:

select * from emp where empno = :x ;

     其中x是个变量,在真正的执行过程中,分别为x赋值1234,4567,7890等,查询出需要的结果。 

 

 

解剖SQL语句的执行过程:

     为理解上面的常见错误原因所在,特别是在理论上理解语句共享性原理,需要从解剖SQL语句执行过程开始。

下图是SQL语句的主要执行过程:

 

 

即SQL语句主要分为如下4个阶段。

1.Parse(解析)阶段
      在该阶段,Oracle将首先在Share Pool中搜索该语句,即判断该语句是否已经被分析和执行过,如果没有发现该语句,则需要检查该语句的语法、检查该语句的主义及访问权限、对视力定义和子查询进行转换操作,并最终确定该语句优化的执行计划,这个完整的分析过程叫硬解析(Hard Parse)。如果在Share Pool中发现了该语句,说明该语句已经被分析和执行过,则只需要检查该语句的语义及访问权限,而其他大部分工作则无需再进行了。这个过程叫软解析(Soft Parse)。可见硬解析比软解析的资源消耗大多了。
2.Bind(绑定)阶段
      在该阶段,当SQL语句含有变量(Bind变量)时,Oracle通过赋值或传参等方式为这些Bind变量赋值。
3.Execute(执行)阶段
      在该阶段,Oracle将实施Parse阶段确定的执行计划,开始执行DML语句,实现I/O及排序操作等。如果是DDL、DML操作,完成此阶段,则执行过程结束。
4.Fetch(获取)阶段
      在该阶段只适合于Select操作,即进行查询记录的读取并对查询结果进行排序。为提高性能,Oracle建议以数组方式成批提取记录,降低服务器和客户端的网络传输次数(Round-trip)。

 

 

 

 

 

  • 大小: 20.8 KB
1
2
分享到:
评论

相关推荐

    解剖SQL执行计划

    ### 解剖SQL Server执行计划 #### 一、执行计划概览 在深入探讨SQL Server执行计划之前,我们首先需要理解什么是执行计划以及它为何如此重要。执行计划是SQL Server优化器为查询选择的最佳运行策略。当数据库...

    Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解

    重点讲解执行计划在SQL语句执行的生命周期中所处的位置和作用,SQL引擎如何生成执行计划以及如何获取SQL语句的执行计划,如何从各种数据源显示和查看已经生成的执行计划。 第二篇“SQL优化技术”深入分析Oracle的SQL...

    Oracle 高性能SQL引擎剖析SQL优化与调优机制详解

    资深Oracle DBA黄玮(Fuyuncat)十年磨一剑 深入揭示OracleSQL优化与调优的原理、核心...然后介绍如何对SQL语句进行优化以获得稳定、高效的性能。最后,依据对SQL优化及调优技术的分析,介绍如何快速优化SQL的思路。

    SQL Monitor技术介绍.pptx

    SQL Monitor的设计目标是帮助用户实时了解SQL语句的执行情况,从而有效地诊断和优化数据库性能。这一技术旨在消除传统的猜测式、运气型或黑客式的“调优”方法,转而采用基于设计和逻辑的调试技巧,推动实现卓越的...

    数据库课件及课堂练习

    通过解剖和运行示例数据库,你可以亲自体验SQL语句的执行过程,进一步加深对数据库操作的理解。 总的来说,这个资料包是你深入学习数据库系统概论的理想起点。无论是对于学术研究还是职业发展,掌握数据库知识都是...

    C,Linux.SQL,XML和J2EE编程之道.rar

    "SQL语言入门教程.pdf"可能会讲解SQL的基本查询语句(如SELECT、INSERT、UPDATE和DELETE)、聚合函数、子查询、联接和视图等,旨在让读者理解如何有效地从数据库中提取、修改和管理数据。 XML(eXtensible Markup ...

    解剖petshop_ASP.NET开发B S系统

    数据库连接和SQL语句则构成了数据访问层。 在PetShop项目中,ASP.NET的核心技术包括: 1. **ASP.NET Web Forms**:这是ASP.NET的基础,用于创建动态交互式的Web页面。PetShop使用Web Forms构建用户界面,通过控件...

    Visual Basic数据库系统开发-光盘源码

    开发者需要理解业务流程,将其实现为VB6的界面操作和后台SQL语句。 7. **物资管理系统**:物资的采购、存储、发放等流程可以通过VB6的界面进行控制,后台数据库记录物资的实时状态,确保数据准确无误。 8. **学生...

    《Visual C++ 2005管理系统开发经典案例》光盘

    开发者需要学会如何使用这些API来建立数据库连接,执行SQL语句,处理结果集。 4. 多线程编程:在开发数据库管理系统时,多线程是常见需求,用于并发处理用户请求。C++提供如`std::thread`等多线程支持,开发者应...

    2022山东计算机等级考试考试考前冲刺卷(2).docx

    通常,Java程序通过JDBC驱动与数据库建立连接,执行SQL语句。 这些知识点涵盖了C++编程、Java编程、数据库管理、计算机网络和解剖学等多方面的内容,这些都是计算机等级考试中的常见考点。为了准备这样的考试,考生...

    Creating_Pentaho_Solutions-1.5.4.pdf

    - **SQL语句执行**:教授如何在Pentaho中执行SQL语句。 - **SQL查询** (SQLQuery) - **数据检索**:介绍如何使用SQL查询从数据库中检索数据。 通过以上内容的介绍,可以清晰地了解到创建Pentaho解决方案涉及的...

    adpdbexplorer.zip

    3. **查询执行**:内置的SQL编辑器让用户可以编写和运行SQL查询,快速获取所需信息,支持复杂的SQL语句和PL/SQL块。 4. **对象管理**:用户可以创建、修改、删除数据库对象,如新建表、视图,或者修改已有的存储...

    pikachu-master.zip

    1. SQL注入:这是一种常见的Web应用漏洞,攻击者通过构造恶意SQL语句,可以获取、修改或删除数据库中的敏感信息。在Pikachu靶场中,你可以学习如何识别SQL注入漏洞,以及使用各种技巧防止此类攻击。 2. XSS(跨站...

    C#100个编程实例程序

    7. **数据库交互**:ADO.NET是C#进行数据库操作的主要工具,实例可能涵盖连接数据库、执行SQL语句、数据绑定等,这对于开发数据库驱动的应用至关重要。 8. **多线程编程**:C#支持多线程,实例可能包含线程的创建、...

    oracle开发使用手册3

    PL/SQL是Oracle的内置过程语言,用于编写存储过程、函数和触发器。此部分将详细讲解PL/SQL的语法结构,包括变量声明、控制流语句、异常处理以及游标使用等,帮助开发者编写出高效的数据库脚本。 3. **041.PDF - ...

    张孝祥Java 就业培训教程

    JDBC(Java Database Connectivity)是Java访问数据库的标准接口,教程中会介绍如何连接数据库、执行SQL语句、处理结果集,为数据库驱动的应用开发打下基础。 最后,可能会涉及一些企业级应用开发技术,如Spring...

    asp程序设计

    在ASP中,可以创建变量、执行条件语句(If...Then...Else)、循环(For, While等)、函数以及错误处理。 2. **内置对象**:ASP提供了多个内置对象,包括Request、Response、Session、Application、Server和Object...

Global site tag (gtag.js) - Google Analytics