欢迎投稿

今日深度:

Oracle核心技术 笔记(该书读得不仔细,需要找时

Oracle核心技术 笔记(该书读得不仔细,需要找时间再细读~~),oracle核心技术


Oracle核心技术

跳转至: 导航、 搜索

目录

  • 1 开始
  • 2 redo和undo
  • 3 事务与一致性
  • 4 锁与闩
  • 5 缓存和复制
  • 6 写入和恢复
  • 7 解析与优化
  • 8 RAC及‘缺陷’
  • 9 附录A 转储与调试

开始

redo和undo

  • 实际的顺序变成3 1 2 4,2条redo被合并为一条日志记录,写入到redo缓冲区
  • 事务中的第一次修改包含一些特殊步骤*
  • (我的小结)理论上说来,redo日志写成功即意味着事务已经成功提交,这时如果数据库崩溃导致内存中的当前状态没有更新到数据库存储中时,就可以通过redo再做一次以确保事务完成;另外一方面,由于一个嵌套事务的失败,导致已完成的数据库更新需要回退,这时就需要undo,而undo本身有可能因存储于易失性区域崩溃而丢失,这时就需要把undo再通过undo的redo日志再做一遍以恢复数据到前一个一致状态
    从上面的描述可以看到,事务的实现依赖于数据修改是可逆的这一点,否则状态易失(如赋值操作、文件写操作)就不可能做到一致性恢复
    而一致性恢复依赖于全局一致性快照(即MVCC)的创建,为此需要事务号、时间戳这些特殊的底层属性来实现,这可以参考CLojure语言中相关概念
  • why?undo记录阻止了其他用户查看我们正在改变的数据(中间临时状态)
  • redo allocation latch:保护redo日志缓冲区(因为只有一个lgwr进行着串行的写操作)
  • p17 每个人都做一点点“额外的”工作(协作的开销?),就意味着他们可以在不同的地方同时工作,而不必经常在同一个地方竞争(contention)
  • redo simplicity
  • undo complexity
  • 事务与一致性

  • 事务与undo
  • x$ktuxe
  • newing, & 闪回。。。
  • 单个undo块可包含多个事务的undo记录
  • 数据块访问与undo
  • 提交SCN
  • 大对象(LOB)
  • 小结
  • 锁与闩

  • 等待唤醒机制(相当于Linux内核里的信号量?)
  • library cache latch
  • 锁:保护对象(锁=排队?)
  • 死锁
  • 锁模式
  • 保护锁的闩锁*
  • KGL锁(和pin)
  • 锁和pin=〉11g后逐步被Mutex替代
  • 缓存和复制

  • 多个数据块缓存
  • 工作集
  • LRU/TCH算法
  • REPL_AUX
  • 查找数据
  • 写入和恢复

  • dbwr
  • 写进程的交互
  • 恢复
  • 解析与优化

    RAC及‘缺陷’

    附录A 转储与调试 




    www.htsjk.Com true http://www.htsjk.com/shujukunews/4324.html NewsArticle Oracle核心技术 笔记(该书读得不仔细,需要找时间再细读~~),oracle核心技术 Oracle核心技术 跳转至: 导航、 搜索 目录 1 开始 2 redo和undo 3 事务与一致性 4 锁与闩 5 缓存和复制 6 写入和...
    评论暂时关闭