Oracle数据库底层

本文探讨了Oracle数据库的底层架构,包括SGA(System Global Area)和PGA(Program Global Area),重点阐述了SGA中的共享池和数据库数据缓冲的作用。讲解了库高速缓存的软解析和硬解析,以及高速字典缓存的功能。文章强调了编写高性能SQL语句的重要性,特别是考虑语句的共享性,并提供了查看库高速缓存数据的方法。此外,还介绍了缓冲区缓存的管理和逻辑、物理读取的概念,以及执行计划开发在查询优化中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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


缓冲区缓存:

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值