oracle体系结构(2)

本文深入解析Oracle数据库的内存结构,重点介绍了sharedpool(共享池),包括其构成元素librarycache和datadictionarycache的功能与作用。同时,阐述了SQL在Oracle内部的处理流程,以及redologbuffer(重做日志缓冲区)的工作机制。

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

1.shared pool(共享池)
share pool 是由library cache和data dictionary cache 构成
共享池是对sql,pl/sql程序语法分析,编译执行的内存区域。
seared pool 的作用:
1.用于存储:
•最近执行的SQL语句
•最近使用的数据定义
2.它由两个关键性能相关的内存结构组成:
•库缓存
•数据字典缓存
3.根据参数调整大小
libarary cache缓存
library cache(库缓存):library cache是shared pool的一部分,它几乎是oracle内存结构中最复杂的一部分,主要存放shared curosor 和plsql对象的信息,以及这些对象所依赖的table,index,view等对象的信息。
1.存储了所有编译过得sql语句,pl/sql语句
2.由所有用户共享使用
3.发起一条sql时,首先检查library cache 中是否有一条已经解析过且准备执行相同语句,若有,oracle就使用library cache的这个语句版本,从而减少更多的处理时间,我们称之为软解析。soft parse
4.如果oracle在library cache 有此sql代码的执行版本,则必须建立新的可执行代码,称为硬解析 hard parse
5.使用最近最少使用的算法进行管理(lru)
data dictionary cache (数据字典的缓存)
1.主要包含对象定义,用户名,角色,权限等信息。
2.当执行一段sql代码时:
oracle首先需要检查你是否具有执行该操作的权限。在data dictionary cache中查看是否有相关信息,若无,oracle 把信息从数据字典表读到data dictionary cache 中,
3.数据字典未命中——即oracle未在data dictionary cache 中发现数据,那莫需要花费额外的成本进行数据处理。
4.没有直接调整library cache 和data dictipnary cache 大小的方,只能通过增加或减少shared pool。
sql在oracle内部的处理流程
sql处理的第一阶段就是sql解析。当应用程序发出sql语句时,该应用程序向数据库发出一个解析调用,以准备执行该语句,解析调用会打开或创建一个游标,他是一个特定于会话私有的sql区的句柄,器中包含了已解析的sql语句,和其他处理信息。游标和私有sql区位于pga中。

在这里插入图片描述

redo log buffer(重做日志缓冲区)
1.是sga中的一个循环使用的缓冲区,它保存有关更改的信息。此信息存储在redo条目中。redo条目通过插入,更新,删除,创建,更改,和删除操作重新构造或重做数据库更爱所需的信息。
2.redo条目记得不仅是sql语句的本身,还包括执行后对数据库中某个文件某个块的修改,包括dml,ddl操作。
3.重做条目占用缓冲区中连续的,顺序的空间。后台进程lgwr将重做入职缓冲区写到磁盘上的活动重做日志文件。
4.记录所有redo条目,目的是用于数据库的恢复。
redo log buffer 特点
lgwr会在什么情况下将信息写入磁盘
1.当一个用户执行commit语句时
2.每三秒执行一次
3.当rode log buffer 满三分之一时
4.当一个dbwn进程向磁盘写入时
redo log buffer
lgwr 将redo条目从redo log buffer 写入redo log file,那么服务器进程可以将新的日志项覆盖写入,因此数据库给redo log huffer 分配了较小的内存,大约5mb。
较小的Redo log buffer将减少redo log file 的IO操作,但是提交处理将花费较多的时间。
间。
较大的Redo log buffer将会在成LGWR归于繁忙的进进行写入,会造成系统CPU压力。
nologging选项。该选项可以绕过redo log不进redo log记录。减少资源争用。
查看log buffer
show parameter log_buffer 查看
select name,bytes,resizebale from v$sgainfo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值