Oracle进阶学习:SQL语句执行过程及解析类型!

一、Oracle数据库的体系结构

 

Oracle 体系结构简要如下图

Oracle进阶学习:SQL语句执行过程及解析类型!_第1张图片

 

EM(Enterprise Manager)是Oracle实际的基于Java的管理工具,可通过浏览器访问数据库的管理界面,SQL PLUS可以访问数据库的数据信息。

二、SQL语句执行过程

1、一些背景知识

(1)ORACLE数据库启动的时候,Oracle首先在内存中划出一段空间启动一堆进程,进程以及该内存区域统称为Oracle实例

(2)Oracle实例关联的基本内存结构包括:

(3)系统全局区(SGA)由所有服务器进程和后台进程共享,对于所有进程来说,内存空间共享,实际工作中会有一定区域的分配

(4)程序全局区(PGA)专用于某一个服务进程或者后台进程,每一个进程使用一个PGA,Oracle新版本,存在一个很大空间的PGA空间,每启动一个进程,会将一定PGA空间分给对应的进程,重点是前台进程和PGA的关系

(5)Oracle数据库三种文件组成

  • .ctl文件 控制文件
  • .log文件 日志文件
  • .dbf 数据文件

2、相关知识

Oracle进阶学习:SQL语句执行过程及解析类型!_第2张图片

 

Server process是实例的进程,主要在SQL处理时执行部分功能

SQL语句的执行过程

(1)客户端输入SQL语句

(2)SQL语句经过网络到达数据库实例

(3)Server process拿到SQL语句之后进行解析,首先应该是去shared pool查找是否存在对应的语句以及执行计划,如果没有找到,server process自己解析进行下一步去执行解析,解析步骤如下:

  • SQL process判断语句语法是否正确
  • 访问的表是否具有访问权限
  • SQL语句涉及的表以及视图数据库有没有
  • SQL语句应该如何执行->寻找最优的执行方法,然后生成执行计划

(4)server process根据SQL语句的执行计划去DBF取出数据,放到buffer cache,然后返给用户,在此之前是server process首先寻找的是buffer cache,如果存在则直接在buffer cache取出数据。

三、SQL语句解析类型——硬解析和软解析

1、硬解析和软解析

Oracle数据信息全部存储在数据字典中,Oracle的解析有两种,软解析以及硬解析

  • 硬解析 hard parse 没有缓存进入硬解析
  • 硬解析内容:语法错误,对象存不存在,用户是否有操作权限
  • 硬解析在n种执行方案中找出最优的执行方案最消耗资源以及损耗时间
  • 软解析 soft parse 有缓存
  • SQL语句语法
  • SQL所对应一些对象的权限满不满足

软硬解析的区别在于,软解析不必挑选最优方案

均要频繁访问数据字典信息(对象权限信息),所以oracle将数据字典信息放置到 share pool中跟library cache放置在一块

2、shared pool功能

shared pool 缓存SQL语句以及SQL语句的执行计划

  • parse 解析
  • excel 执行
  • fetch 取回数据

3、shared pool组成

shared pool是一块内存池,内部被分成比较小的区块,

  • free部分 空闲部分
  • library cache 库缓存,保存的是SQL语句以及SQL语句的执行计划
  • row cache 缓存数据字典信息

4、SQL语句

(1)查看各个内存块的大小

  • library cache
  • select * from v$sgastat a where a.Name='library cache
  • free memory
  • select * from v$sgastat a where a.pool='shared pool'and a.name='free memory';
  • row cache
  • select * from v$sgastat a where a.Name='row cache';

(2)SQL

select name,value from v$sysstat where name like 'parse%';

Oracle进阶学习:SQL语句执行过程及解析类型!_第3张图片

 

整理不易,喜欢的朋友点个赞呗!!!

你可能感兴趣的:(oracle,SQL,执行过程,解析类型)