为什么要引入LGWR后台进程和redo log buffer

如果使用前台进程来将redo的信息写入到redo日志文件组中,那么会导致并发的前台进程对redo日志文件组的争用,从而使用后台进程LGWR之后,不会产生前台程序的争用情况

引入redo log buffer是为了提高数据库的性能,从而前台进程只要将生成的redo信息写入到redo log buffer中

oracle在提高性能的方面,将redo的block块大小和操作系统的块大小设置为一样大,从而不会产生碎块的问题





LGWR将redo log buffer中的内容写入到redo日志文件组中,从而LGWR的触发条件如下:

1、当事物进行commit的时候

2、当redo log buffer中的内容到达1M的时候

3、当达到redo log buffer中的内容的1/3的时候

4、每隔3S

当事物进行commit的时候触发LGWR写操作,是为了确保当用户提交事物的时候,如果数据库发生了故障不会丢失数据,此时redo日志组的信息已经写入到redo log files中,从而数据不会产生丢失

当内容达到1M或者是内容达到1/3或者3S的时候触发,是为了防止当数据库的事物提交的很少,但是每次都产生大量的redo日志信息的时候,防止redo log buffer中的信息积压,从而每次定时的唤醒LGWR进程,将日志信息写入





在LGWR写的时候,会发生一个事件,那就是log file sync等待时间,可能发生为两种情况:

1、当前台进程产生了redo日志时,redo log buffer中的内容满了,从而没有空间来保存新的生成的redo信息,这个时候前台进程必须等待LGWR将buffer中的内容写入到redo日志文件组中,从而发生的等待

2、当用户提交事物时,等待LGWR将日志信息写入到日志文件组中,此时也会发生log file sync等待事件

总的来说:log file sync等待事件就是等待LGWR将redo log buffer中的内容写入到redo日志文件组中发生的等待事件





如何来解决大量的log file sync事件

1、增加redo log buffer的大小,在此时可能需要调整_log_io_size的大小,防止大量的redo信息的堆压

2、将redo日志文件放到IO性能比较好的磁盘上,从而增加LGWR写日志的速度





日志切换

日志切换是一个昂贵的操作,alter system switch logfile;

redo文件二的更多相关文章

  1. 【恢复】 Redo文件丢失的恢复

    第一章 Redo文件丢失的恢复 1.1  online redolog file 丢失 联机Redo日志是Oracle数据库中比较核心的文件,当Redo日志文件异常之后,数据库就无法正常启动,而且有丢 ...

  2. 简单记录一次REDO文件损坏报错 ORA-00333重做日志读取块出错

    一.故障描写叙述 首先是实例恢复须要用到的REDO文件损坏 二.解决方法 1.对于非当前REDO或者当前REDO可是无活动事务使用下面CLEAR命令: 用CLEAR命令重建该日志文件SQL>al ...

  3. 转储oracle的redo文件

    1.确定当前使用的redo文件 SQL> select member from v$logfile where group# = ( select group# from v$log where ...

  4. redo文件一

    redo log files and redo log buffer redo log files的作用的是确保数据库崩溃之后能正确的恢复数据库,恢复数据库到一,致性的状态 redo log file ...

  5. 重建redo文件

    需求背景 由于前期安装oracle时redo文件大小或者路径规划不合理需要进行修改,以便满足性能测试要求.redo文件规划大小建议与生产环境一致. 重做日志相关数据字典 1.v$log  记录数据库中 ...

  6. redo文件四

    v$session_wait 用来查询redo buffer的空间信息 select sid,event,seconds_in_wait,state from v$session_wait where ...

  7. redo文件三

    switch logfile是一种昂贵的操作,在进行日志切换的时候,是不允许生成新的redo信息 在前台进程生成redo日志信息的时候,此时redo buffer已经分配了空间,并且在当前的redo日 ...

  8. HTML5 文件域+FileReader 读取文件(二)

    一.读取文本文件内容,指定字符编码 <div class="container"> <!--文本文件验证--> <input type="f ...

  9. linux(八)linux系统中查找文件二

    前面介绍的是find命令,我们发现一个find命令居然有那么多的命令,我看到都要晕了,不管没有关系,加油.相信自己! 一.grep命令 1.1.作用 Linux系统中grep命令是一种强大的文本搜索工 ...

随机推荐

  1. POJ1182 食物链

    并查集经典题1. 向量的思考模式2. 再计算向量时,要画图:有一个关系一开始写错了3. 本人的norm函数一开始x >= 3写成了 x>3,应该对这种小函数多做UT(口头上的,比如)4. ...

  2. Web 技术人员需知的Web 缓存知识

    最近的译文距今已有4年之久,原文有一定的更新.今天踩着前辈们的肩膀,再次把这篇文章翻译整理下.一来让自己对web缓存的理解更深刻些,二来让大家注意力稍稍转移下,不要整天HTML5, 面试题啊叨啊叨的~ ...

  3. HttpServletRequest接口实例化的使用

    HttpServletRequ接口的使用和jsp内置对象的request对象非常类似,request对象其实 就是HttpServletRequest接口的一个实例,不过气实例化的过程是自动的,无须自 ...

  4. 【Android多屏适配】动态改变Listview item高度

    在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...

  5. 第三章:推荐系统冷启动与CB

    3.1冷启动问题简介: 冷启动问题(cold start)主要分三类: •     用户冷启动 •     物品冷启动 •     系统冷启动 参考解决方案: •     推热门 •     利用用户 ...

  6. orzdba在5.6安装

    前言:淘宝的orzdba查看MySQL服务器当前QPS,TPS很方便,但是不少人反应,在5.6原本好用的工具不好用了,频繁出现这样警告: Warning: Using a password on th ...

  7. Bug:java.lang.IllegalStateException

    使用迭代的时候,出现了java.lang.IllegalStateException 代码: for ( TaskInfo info : userTaskInfos ) { if ( info.isC ...

  8. gulp.watch监听文件

    Gulp.watch()会返回我们熟知的watcher.我们可以利用watcher来监听额外的事件或者向watch中添加文件. 例如,在执行一系列任务和调用一个函数时,你就可以在返回的watcher中 ...

  9. hdu 4973 A simple simulation problem. (线段树)

    题目链接 题意: 给定n长的序列 m个操作 序列默认为 1, 2, 3···n 操作1:D [l,r] 把[l,r]区间增长 :( 1,2,3,4 进行 D [1,3]变成 1,1,2,2,3,3,4 ...

  10. POJ 3080 (字符串水题) Blue Jeans

    题意: 找出这些串中最长的公共子串(长度≥3),如果长度相同输出字典序最小的那个. 分析: 用库函数strstr直接查找就好了,用KMP反而是杀鸡用牛刀. #include <cstdio> ...