oracle体系结构-一条sql说明oracle体系结构

本文详细介绍了Oracle数据库中SQL执行的具体流程,包括从用户登录、SQL解析、执行计划选择到数据检索的过程。同时,还解释了PGA和个人会话空间、SGA及共享池等关键概念。

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

最近拜读了梁老师的《收获不止oracle》,作为一个三四年的程序猿,算是第一次比较系统的去了解oracle体系结构这种偏底层的东西,

一般都是直接基于应用,用过可能就忘了。

这里做个相应的记录,也算是给自己学习的校验。

一条sql说下oracle体系结构:

select a from b where c=1

比如上面这句SQL,一般我们操作数据库,会通过sql plus连接数据库,或者直接通过plsql连接数据库。而你要连接上数据库,则需要通过给到你的账号

进行登录。

登录之后,数据库会在PGA(个人区域),也就是你个人的空间记录你的权限信息和你的连接会话信息等

当你执行sql时,oracle会给你的这个sql一个唯一的hashcode,根据这个hashcode去SGA(共享区域)的共享池找对应的hashcode,如果有的话,则找到该hashcode绑定的执行计划以及sql检查结果等数据,直接按照以前的步骤执行就好。如果没有对应的hashcode,则需要先进行sql语法检查,检查之后,进行sql解析。oracle会判断是通过走索引还是全表扫描的cost低,选择一个cost低的路线。

选择完毕,如走索引,先去SGA的数据缓冲区找对应的数据,如果没有,则需要去把数据库的数据文件的数据读到数据缓冲区。

这样,完成了一次sql操作。

下一次再执行这条sql时,因为已经有过一次操作了,所以再次执行直接那之前的数据读取就好了。


以上涉及了几个概念,

PGA:可以理解为个人会话空间

SGA:共享存储,里面包含了共享池,数据缓冲区,日志缓冲区等

数据文件:数据库存放了数据文件、日志文件等


++++++++++++++++++++++++++++

如果是一条update语句

++++++++++++++++++++++++++++

则需要多如下几步:

undo会记录事务,把更新前的数据存放到undo空间,等的用户的commit或者rollback操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值