一、Oracle数据库的体系结构
Oracle 体系结构简要如下图
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、相关知识
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的解析有两种,软解析以及硬解析
(1)硬解析 hard parse 没有缓存进入硬解析
硬解析内容:语法错误,对象存不存在,用户是否有操作权限
硬解析在n种执行方案中找出最优的执行方案最消耗资源以及损耗时间
(2)软解析 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%';
整理不易,喜欢的朋友点个赞呗!!!
欢迎工作一到五年的Java工程师朋友们加入 Java架构度寒冬:962992162群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!