注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

饥民2011

一直在搬砖

 
 
 

日志

 
 
 
 

Oracle 日志原理剖析  

2013-02-08 22:07:06|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这篇文章是参考甲骨论老相老师的教学视频
http://v.youku.com/v_show/id_XMzk0NjYxNzgw.html
所做的学习笔记
 

作为1个DBA, 需要学习许多数据库知识, 但是目的无非两大部分.
1. 保持数据库数据的一致性
2. 优化数据库性能


而日志系统只对应第1点,日志系统就是用来保持数据的一致性的.

我们先回顾下之前讲过的sql语句执行流程
Oracle 日志原理剖析 - 饥民 - 饥民2011

如上图.可以见到:
1. 产生日志的原因是Buffer cache里发生的数据改动.
2. buffer cache里数据改动产生的日志被写入Redo log buffer(日志缓存)里.
3. 后台进程LGWR会将redo log buffer里的日志写入到硬盘上的日志文件(物理IO)



        而且之前我们讲过,Buffer cache是由许多个大小为1个block size 的buffer组成的. 所以buffer cache里的数据改动实际上就是buffer的改动.


       从逻辑上看,我们可以假定Buffer cache存在一名记录者. 这名记录者可以实施地观察出buffer cache哪1个buffer被修改, 在那个时间点被修改, 并严格按照修改时间顺序把被修改的buffer的改动记录下来.''

如下图:
      Oracle 日志原理剖析 - 饥民 - 饥民2011

     当然,实际上Database Buffer Cache中是不存在记录者这个东西的.
     不过这两个逻辑也让我们明白三点:

     1. 日志记录的单位是buffer.
     2. 严格按照buffer被修改的时间顺序来记录.
     3. 并不关心buffer是被哪个session修改的

      从实际上看, buffer cache里的buffer是被server process修改的, 一旦server process修改了1个buffer里的数据, server process就同时生成重做日志数据,并放入与该server process对应的PGA中.  然后根据一些触发条件,会将PGA里的日志写入到SGA里面的redo log buffer中,  最后会被后台进程LGWR写入到日志文件中...

      我们也可以分析出
      1. 对小量数据的多次修改可能会产生大量的日志数据.
      2. 大量的日志数据被写入到日志文件会占用大量IO资源


      这一节,老相老师只提到这几个点,  他说以后讲优化数据库时会再详细讲..
  评论这张
 
阅读(543)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018