Oracle数据库底层

来源:互联网 发布:监控录像分析软件 编辑:程序博客网 时间:2024/06/14 18:55

Oracle底层的架构对编写出高性能的SQL语句非常重要

实例系统全局内存局部区域(SGA)和一系列的后台进程组成(PGA)
SGA的两个领域:共享池和数据库数据缓冲

SGA共享池: 地位: 关键部分之一;
作用:Oracle缓存程序数据的地方;
库高速缓存: 存储SQL语句的地方,保存已经解析的语句的区域,解析暴走验证语句的语法、检验提及的对象,以及确认该对象
的用户权限。
软解析: 取回以前的解析信息重用;
硬解析:执行所有工作为当前语句生成执行计划

高速字典缓存:存放系统参数;
最少使用算法
语句需要被共享, 如何写出高共享的SQL语
编写代码较少使用锁存器

如何查看库高速缓存中包含此数据?
查询表v$sql ;
Oracle在执行语句时,Oracle会首先将字符串转换为散列值,大小写、注释与否

锁存器:Oracle为了读取存放在库高速缓存或其他内存结构中的信息时必须获得的一种锁。
保存库高速缓存避免被两个同时运行的会话修改。
检查锁存器是否空闲


缓冲区缓存:

最大的部分之一;
数据库块从物理盘读取或写入硬盘之前,它用来存储数据块,数据块是Ora
cle操作的最小单位;

块中包含表数据行或索引条目,可能还包含用来排序的临时数据:

关键点:ORACLE必须读取块来获得SQL语句需要的数据行,大小为4kb\8kb\16kb,大小因素取决于使用的操作系统;
块有结构,一部分可能是用来管理块本身的信息,其余部分用来存储实际的数据或者空白空间;

块的管理:使用最少使用算法和维护一个接触计算器两种方法进行维护;
使用锁存器概念管理访问
访问尽可能少的数据块;
逻辑读取:从缓冲区缓存中读取数据块
物理读取:必须从磁盘读取;

执行计划开发,查询转换,发生在查询语法和权限检查之后;
查询一系列块查询块的转换阶段;查询块是通过SELECT关键字来定义的;
查询转换的目的:确定如果改变了查询的语法会不会提供提供更好的的查询计划;