`
yufeng0471
  • 浏览: 101024 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sql执行过程分析

阅读更多

我们总是写sql语句,数据库把结果返回给我们,那中间过程又是什么?如果了解oracle是怎么执行sql语句的中间过程,对我们优化sql有很大的帮助

首先了解一下执行sql,需要消耗什么资源,
cpu,
内存,
io,

我们要了解什么情况下会消耗cpu,什么情况下消耗内存,什么情况下消耗io,只有了解了这些,我们才能
有针对性的优化,如果oracle的瓶颈在内存上,就要通过一定的手段(可以查看awr报告,也可以直接查询oracle统计表)去找出最消耗内存的sql语句来优化,
是select出来的无用字段太多了,还是表之间的关联太多了,还是无效的排序太多了,这都是消耗内存的操作,只有了解什么操作是消耗内存的,才能有针对性
的优化

在了解sql过程之前,我们有必要了解一些概念:
硬解析,
软解析,
物理读,
逻辑读,
buffer
父游标
子游标

下面我们来详细了解一下sql语句从客户端发起,到数据库服务端返回数据,中间到底发生了什么事情,我们以select username from tbuser为例
实验环境:oracle    专用服务器模式

oracle要判断语法是否正确
查询的表(tbuser)是否存在
当前用户是否有权限使用该表
select出的字段username是否存在

以上条件只要有一个失败,就会中止查询

上面的判断都是在pga中进行的,如果判断都正确的话,就会进入到sga中查找该语句是否在sga的share pool中存在,如果存在,则说明该语句曾经执行过,oracle会充分利用该资源,
oracle判断sql是否相同,是通过把sql转换为asc码来比较的,所以说,如果语句中大小写不相同,或者多一个空格,少一个空格,oracle都会认为不一样,重新解析该sql语句

比如:select username from tbuser和select userName from tbuser就是不一样的sql语句,oracle会解析俩次,不能充分共享sql语句,会造成硬解析太多,性能下降

如果要执行的sql语句在share pool中已经存在,就可以共享该语句的父游标了,那能不能共享子游标呢,还不一定

 

待续。。。

分享到:
评论

相关推荐

    SQL执行计划简单分析

    执行计划可以帮助我们了解 SQL 语句的执行过程、资源消耗和性能瓶颈。Oracle 数据库提供了多种方法来查看 SQL 语句的执行计划,例如使用 PL/SQL Developer、EM 或者 SQLPLUS 工具等。下面我们将使用 SQLPLUS 工具来...

    oracle sql执行过程(流程图)

    Oracle sql执行流程图_SQL执行过程一、sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。3)...

    MonetDB的SQL编译执行过程分析.docx

    MonetDB 的 SQL 编译执行过程分析 MonetDB 的 SQL 编译执行过程是一个复杂的过程,涉及到多个步骤和技术。本文将对 MonetDB 的 SQL 编译执行过程进行分析,涵盖编译过程、Sqlparse 函数、bison 介绍、符号编译等...

    非常好用的SQL执行查询分析器

    SQL执行器则是一个专门用于执行SQL语句的工具,它简化了SQL的编写和执行过程,使得用户可以快速地获取和操作数据。 在描述中提到的“无须安装SQL SERVER客户端”,这意味着该工具可能是一个轻量级的应用程序,它...

    db2查看sql执行计划

    通过查看执行计划,可以了解到查询的具体执行流程,从而帮助分析查询性能并进行优化。 ### 三、使用DB2EXPLN工具查看执行计划 #### 1. DB2EXPLN工具介绍 `DB2EXPLN`是DB2提供的一款用于查看SQL执行计划的命令行...

    NCR_teradata_SQL执行分析

    ### NCR Teradata SQL执行分析 #### 一、Teradata数据分布与主索引(PPI) 在Teradata数据库中,数据分布与主索引(Primary Index, PI)密切相关。这决定了数据如何分布在不同的AMP(Access Method Processor)上,...

    DB查询分析器批量执行多条SQL语句并查看各自的执行时间

    在数据库管理和维护过程中,频繁需要执行一系列SQL语句。然而,大多数数据库管理系统(DBMS)并未提供直观的方式展示每条SQL语句的具体执行时间。这导致了在调试或优化SQL性能时存在一定的挑战。为了弥补这一不足,...

    通过分析SQL语句的执行计划优化SQL.doc

    Row Source则表示SQL执行过程中的数据源,它可以是表、视图、索引或者其他数据源。理解Row Source对于分析SQL执行路径至关重要。Driving Table是查询中驱动整个连接操作的表,它的选择直接影响到查询效率。Probed ...

    Oracle中SQL语句执行效率的查找与解决

    Oracle提供了多种工具来分析SQL执行计划,包括EXPLAIN PLAN和AUTOTRACE。通过这些工具,可以详细查看SQL语句如何访问表和索引,以及执行过程中涉及的操作类型。 #### 二、执行计划优化 Oracle数据库的执行计划选择...

    Sql查询分析器

    此外,"Sql查询分析器"还可能包含一些高级功能,如性能分析、查询优化、存储过程的调试和执行计划的查看等。这些功能对于数据库管理员和开发者来说非常关键,他们可以借此提升查询效率,减少资源消耗,以及找出可能...

    TSQL_Express【批量执行SQL】批量执行sql文件工具

    6. **日志记录**:执行过程中的每一步都会被记录,方便后期查看和分析执行结果。 7. **性能优化**:通过批量执行,减少数据库服务器的负载,提升执行速度。 使用TSQL_Express的过程大致如下: 1. **安装与配置**...

    sqlserver查询分析器 win10可用

    SQL Server查询分析器是Microsoft SQL Server数据库管理系统中的一个重要工具,主要用于编写、执行和测试SQL语句,以及查看查询结果。在Windows 10操作系统(x64)环境下,选择一个兼容且功能强大的查询分析器至关...

    显示 sql 执行效率.

    SQL*Plus 提供了一个非常实用的功能——自动跟踪(Auto Trace),它可以帮助用户分析 SQL 语句的执行情况,包括执行时间、资源消耗等关键性能指标。通过设置 Auto Trace,可以方便地获取 SQL 语句的执行计划...

    mysql深度学习者 MySQL架构与SQL执行流程

    SQL 执行流程是指 MySQL 数据库对 SQL 语句的处理和执行过程。下面是 SQL 执行流程的详细步骤: 1. 连接数据库:客户端连接 MySQL 数据库,建立连接。 2. 传输 SQL 语句:客户端将 SQL 语句传输到 MySQL 数据库。 ...

    存储过程中怎么动态执行sql语句

    “存储过程中怎么动态执行SQL语句”这一标题表明文章将介绍如何在Oracle数据库的存储过程中编写能够动态执行的SQL语句。动态SQL是指在运行时才能确定其具体内容的SQL语句,它允许用户根据不同的条件构造不同的查询或...

    SQL 2005-2008查询分析器

    SQL 2005-2008查询分析器是微软公司推出的用于管理和处理SQL Server数据库引擎的强大工具,主要用于编写、执行SQL语句并进行性能分析。在这个版本的跨度中,SQL Server经历了从2005到2008的重要升级,引入了许多新...

    sql2000查询分析器

    5. 性能分析:通过执行计划,可以预览查询的执行过程,了解SQL语句的性能,优化查询效率。 三、查询分析器的使用技巧 1. 高级查询:使用联接(JOIN)、子查询、聚合函数(GROUP BY, SUM, COUNT等)来构建复杂的...

    sqlserver查询分析器独立版单exe文件,支持2008,2012

    2. **执行Transact-SQL脚本**:除了基本的SQL语句,查询分析器还支持复杂的Transact-SQL脚本,可以用于创建表、视图、存储过程、触发器等数据库对象。 3. **查询结果查看**:执行查询后,分析器会以表格形式展示结果...

Global site tag (gtag.js) - Google Analytics