zoukankan      html  css  js  c++  java
  • Oracle物理体系结构

    一、ORACLE 物理体系结构

    1. 原理结构图

    各部分解释:

    PGA: 私有内存区,仅供当前发起用户使用。

    三个作用

    1. 用户登录后的session信息会保存在PGA。
    2. 执行排序,如果内存不够,oracle会在临时表空间中完成
    3. 保存用户权限信息

    SGA: 包含共享池,数据缓冲区,日志缓冲区以及一些相关的进程。

    DATABASE: 数据最终存放的地方,其中一块区域是日志存放区。数据和记录日志又由DBWR和LGWR来写入数据库和重做日志组,待一个重做日志组满了之后切换到下一个,等到循环了一次之后,原来排序为第一组的日志会被ARCH进程写入归档日志。

    2结构深入

    2.1 从一条查询sql语句解析结构

        假设有一条sql: select * from user where user_id='20'

    1. Sql被解析后,(1区)PGA保存其登陆和权限信息。这一点必须注意,如果保存了该信息,下次调用sql的时候就不需要重新校验,直接玩PGA里取就行了。
    2. 随后该sql会匹配一条唯一的HASH值并到达2区的共享池,共享池判断此HASH值是否之前已经存在,如果存在就直接执行就OK了;如果不存在,就要检查sql的语法、语义等进行验证并解析。解析什么呢?就是要把select * from user where user_id='20' 这条语句,在user_id存在索引的情况下,oracle对最优COST做出选择(到底是索引扫描还是全表扫描),作出选择后oracle会把改执行计划和之前的那条HASH值放在一起。
    3. 带着条件,sql下一步会到数据缓冲区中查找是否存在user_id为20的记录。如果缓冲区有则马上返回结果;如果无,则要到3区(database)中查找,无论是否找到都要返回结果。

    2.2 从一条更新sql语句解析结构

        假设有一条sql:update user set user_name='萧红'

    1. 如上步骤1.2 。
    2. 把数据的操作记录写到重做日志
    3. 写入数据库中,持久化数据,把数据库user表的user_name 字段都改为萧红。

    3提交与回滚

    1. 当用户提交commit的时候,数据并不会马上刷进数据库。数据何时会被刷入数据库?

      这与CKPT进程有关,当缓冲区的数据量达到一定的程度时,CKPT进程会被触发,数据此时才批量刷入数据库。当刷入数据库前断电了怎么办?REDU机制重新执行日志恢复数据。

          2. ROLLBACK 执行的是UNDO

  • 相关阅读:
    2015531 网络攻防 Exp1 PC平台逆向破解(5)M
    2017-2018-1 20155331 嵌入式C语言
    20155330 《网络对抗》 Exp9 web安全基础实践
    20155330 《网络对抗》 Exp8 Web基础
    20155330 《网络对抗》 Exp7 网络欺诈防范
    20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
    20155330 《网络对抗》 Exp5 MSF基础应用
    20155330 《网络攻防》 Exp4 恶意代码分析
    20155330 《网络攻防》 Exp3 免杀原理与实践
    20155330 《网络对抗》 Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/yongjian/p/3700783.html
Copyright © 2011-2022 走看看