zoukankan      html  css  js  c++  java
  • oracle体系结构理解

    体系结构相关内容每次看遍书,过段时间就忘了。。无奈用自己理解的方式记录之。

    1、commit与写盘与否没有关系,也就是说修改数据(insert update delete)后并提交数据,这条被修改的数据不一定会写盘。但是会记redo,写盘只与dbwr有关
    dbwr触发脏数据块写盘(写到数据文件)的几个条件:发生检查点、脏缓存达到限指(1/4满)、没有自由的缓存、超时发生、表空间离线、表空间只读、热备份表空间开始动作、表删除或者截断
    2、理解redo和undo
    insert into 一条语句 commit后没还没写盘(commit后不一定会写盘,写盘只与dbwr有关但redo会有记录) -----掉电 下次启动实例恢复时redo 进行恢复这时不用undo。
    insert into 一条语句没commit 但是这时正好dbwr把脏数据(内存中)写盘(redo也会有记录但是commit之前的数据在undo记录)-----掉电 下次启动时redo一看这条语句没有提交但是已经写盘了,这会就用undo了。因为undo记录有前镜像通过undo进行回滚恢复。注意dbwr触发之前要触发lgwr把logbuffer的数据写到redo
    lgwr触发redo logbuffer的数据写redo文件的几个条件:commit的时候、redolog buffer达到1/3满、redolog buffer日志大小达到1M、每个三秒、在dbwn进程写之前。

    3、脏数据内存中被修改还没有写盘的数据

    4、SMON实例恢复:前滚所以重做日志的改变(redo)、打开数据库为了用户能访问、回滚没有提交的事物(undo),还有个作用是释放临时表空间(效果不明显)

    5、PMON

    清除失败的进程:回滚事物、释放锁、释放其他资源

    重启死掉的 dispatchers

    动态注册监听

    6、检查点进程(CKPT):给DBWn信号、更新数据文件头、更新控制文件

    7、buffer和cache:buffer缓冲,举例数据不会直接写盘有个内存区做缓冲再由缓冲区写盘,起缓冲作用减小IO。cache缓存,顾名思义就是把盘里的数据载入内存做缓冲提高查询效率。

  • 相关阅读:
    9.11 eventbus
    9.10,,,实现new instanceof apply call 高阶函数,偏函数,柯里化
    9.9 promise实现 写完了传到gitee上面了,这里这个不完整
    9.5cors配置代码
    9.5 jsonp 实现
    9.5 http tcp https总结
    9.3 es6 class一部分 and es5 class 发布订阅
    8.30 cookie session token jwt
    8.30vue响应式原理
    warning: LF will be replaced by CRLF in renard-wx/project.config.json. The file will have its original line endings in your working directory
  • 原文地址:https://www.cnblogs.com/datalife/p/6490728.html
Copyright © 2011-2022 走看看