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

    1区:PGA(私有不共享内存区域)当请求的指令发出的时候,先在1区中进行预处理。

      作用:1:保存用户的连接信息。如:会话属性,绑定变量。

        2:保存用户的权限等重要信息。当用户和数据库进行交互的时候,会查出用户的权限,然后把这个用户的权限的信息保存到PGA中。

        3:排序。发出的指令需要排序的时候,先在这里面进行排序,前提是内存够用的情况下。不能的话就在临时表空间中进行排序。也就是在磁盘中进行排序。

    用户的请求经历:1区-----》2区-----》3区。或者1区-----》2区

    一条SQL的运行:先在磁盘中读取,然后语法检查,解析字段等操作。

    1:用户首次进行SQL的运行时,先从磁盘中获取用户的连接信息和相关的权限信息。然后保存到PGA中。由于SESSION没有断开,再次进行查询的时候,这些物理读就不用再进行操作了。

    2:SQL指令结束后,会在SGA区中的共享池中保留一个HASH值。这个值保存了语法检查信息和执行计划等相关解析动作的操作。

    3:当第一次执行的时候,数据一般不在数据缓存区中,而是从磁盘中获取。不可避免产生物流读,当第一次查询后,这条数据会保存到数据缓存区中,然后第二次执行的时候,直接从数据缓冲区中找就行了,避免了物理读。

       回滚的研究:

    1):先查询出来,是否在数据缓冲区中,不存在的话从磁盘中读取到数据缓冲区中。
    2):在回滚表空间的相应回滚段事务表上分配事务槽,从而在回滚表空间分配到空间。这个动作是需要记录日志写进日志缓冲区中的。
    3):    在数据缓冲区中创建object_id=29的前镜像。这个前镜像数据也会写进磁盘的数据文件中的(回滚表空间的数据文件)从缓存区中写进磁盘中的规律:由CKPT决定,也会写进日志缓存区中。
    4):然后这个时候可以进行修改了,object_id=29修改成object_id=92.也是需要记录写进日志缓存区中的。
    5): 这个时候用户提交了信息,日志缓存区立即记录这个提交信息。然后把回滚段事务标记为非激活INACTIVE状态,表示允许重写。
    6):   执行回滚:Oracle需要从回滚段中将前镜像object_id=29的数据读出来,修改数据缓存区,完成回滚。这个过程也是需要写进日志缓存区中的。

    回滚段的相关参数:undo_management

    第一个AUTO是:自动回滚段管理,当回滚段空间不够的时候,自动拓展。

    第二个:DML语句需要记录前镜像,当COMMIT后,表示回滚段保留的前镜像被打上了可以覆盖重新使用的标记,但是要900秒后才可以。

    第三个:回滚段表空间的名字

  • 相关阅读:
    Ocelot(一)- .Net Core开源网关
    Extensions for Vue
    Vue Study [2]: Vue Router
    Vue Study [1]: Vue Setup
    获取当月的第一天和最后一天示例
    常规正则验证表达式
    当需要向数据库插入空值时,sql语句的判断
    让 IE支持圆角的方法
    服务器上传图片案例
    validatebox相关验证
  • 原文地址:https://www.cnblogs.com/bulrush/p/6823890.html
Copyright © 2011-2022 走看看