zoukankan      html  css  js  c++  java
  • redo文件二

    为什么要引入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;
    for linux and python
  • 相关阅读:
    mybatis源码解读
    Spring源码解读
    面试题
    ServiceMesh了解一下
    《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---43
    《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---42
    《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---41
    《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---40
    《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---37
    《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---36
  • 原文地址:https://www.cnblogs.com/kellyseeme/p/5525188.html
Copyright © 2011-2022 走看看