Oracle物理体系结构
2017-05-05 08:57
253 查看
用户请求:1-2-3 or 1-2
(图一)
oracle组成
实例:SGA、后台进程
数据库:数据文件、参数文件、日志文件、控制文件、归档日志文件。其中归档日志文件最终可能会被转移到其他新的存储介质中。用于恢复备份使用。
PGA:私有不共享内存,用户对数据库发起的无论查询还是更新的任何操作都是在PGA预处理,然后才进入实例区域,
有SGA和后台进程共同完成用户请求。
PGA作用:保存用户的连接连接信息,会话属性,连接变量等。保存用户权限等重要信息,当用户进程与数据库建立会话时,系统会将用户权限查出并保存在此会话中。当发起的指令需要排序时,内存PGA区为排序区。如果内存放不下超出的部分就在临时表空间进行
排序,也就是在磁盘中排序。
Oracle执行sql过程
Selectname from t where id = 29
用户提交一条语句给服务器进程,此时在1区(PGA)中完成用户连接信息的保存和权限的保存。(会话不断开下次不需要从硬盘中读取)。并且服务器进程利用此sql语句生成一个Hash值。
随后sql指令进入2区(SGA),在共享池中查看有无此Hash值,如果没有:语法检查、语义检查等。检查通过会存储此Hash值。接着对语句中涉及的表,索引,视图等对象进行解析。生成执行计划存储起来和此前的Hash进行对应。
此时进入数据缓存区,缓存中没有则按照之前分析的执行计划从数据库文件中查找。
两次执行同一条sql比较
原因:1、用户首次执行时需要从磁盘中读取用户连接信息、权限信息并保存在PGA
中,第二次执行时 只需从PGA中读取,避免了物理读。
2、首次执行后,SGA中保存了sql指令唯一Hash值,并保留了语法语义检查及执行计划等相关解析结果。第二次执行时只要Hash值匹配则忽略解析和生成执行计划。
3、首次执行时数据从磁盘中获取,第二次执行时数据在数据缓存区中。
Updatet set age = 20 where id =19;
更新语句的执行工程:
前三条和查询语句基本一样。
数据在数据缓存区被修改后 由DBWR进程写入数据文件。
日志缓冲区保存了数据库相关操作的日志。由LGWR进程写入日志文件。日志文件写满时将会被覆盖,覆盖之前ARCH会将日志备份出去,这些归档文件可用作以后恢复数据。
凡事有记录:数据、日志。先日志后数据。
后台进程介绍
PMON:进程监视器(关注单个进程)
SMON:系统监视器(关注系同级别的)
LCKn:用于集群
RECO:用于分布式
CKPT:用于触发DBWR,(触发频繁不能达到批量写入的效果)
DBWR:把数据从数据缓冲区写数据库数据文件
LGWR:把日志缓冲区中的数据写到磁盘redo文件
ARCH:日志文件快被重写时转移日志文件
回滚介绍:以update语句为例
REDO:重新实现你的操作 ex:日志恢复
UNDO:撤销/回退你的操作 ex:
a87e
rollback
相关文章推荐
- 【Oracle】物理体系结构
- Oracle体系结构之物理结构
- Oracle的体系结构(二)物理存储结构
- Oracle体系结构之-物理结构
- 【Oracle】物理体系结构
- Oracle物理体系结构图
- oracle 体系结构(物理结构、逻辑结构与内存结构)
- oracle物理体系结构---联机重做日志文件
- Oracle体系结构之-物理结构
- Oracle 体系结构之ORACLE物理结构
- Oracle物理的体系结构
- oracle物理体系结构--控制文件
- oracle物理体系结构-----归档重做日志和闪回恢复区
- oracle物理体系结构-数据文件
- 三、Oracle初级学习之体系结构(物理、逻辑结构)
- 【Oracle】物理体系结构
- Oracle体系结构之-Oracle后台进程
- Oracle 9i & 10g编程艺术-深入数据库体系结构——前言
- Oracle 9i & 10g编程艺术-深入数据库体系结构——序
- ORACLE 体系结构