zoukankan      html  css  js  c++  java
  • 提高rollback的速度

    提高rollback的速度

    现象:

    1、客户端使用sqlplus、rapid sql等工具响应较慢

    2、主机cpu使用率较高,主要是IO等待很高

    3、操作系统层面操作响应慢

    过程:

    1、查看alter日志,发现有大量如下信息:

    Thread 1 cannot allocate new log, sequence xxxx

    Checkpoint not complete

    select group#,members,status from v$log;

    发现只有3个group,每个group1个member(默认配置),而且一个状态是current,另外两个是active,很显然redo group不够。

    2、查看后台进程,发现ora_p000...ora_p015共16个进程在运行,该主机2颗cpu,共8个核心,连接到数据库中查看FAST_START_PARALLEL_ROLLBACK参数值为LOW,即默认值。

    这个值表明并行运行的回滚进程有2*number of cpu,刚好是16个进程,与使用ps –ef | grep ora_p看到的一致。

    原因:

    同事通过db_link向这个数据库插入数据(1千多万行),执行了一个多小时,看到未执行完毕,就停止并rollback了,因此产生大量的回滚!为什么回滚这么慢呢?由Checkpoint not complete可知redo log group太少,LGWR在切换到新的group时,需要等待DBWR把数据写入到datafile。

    解决:

    1、增加redo log group

    alter database add logfile group 4 ('/usr/oracle/oradata/sid/redo04.log') size 209715200;

    依次增加到10个group。根据需要适当添加,只要status出现inactive即可。

    2、加快回滚速度

    提高并行回滚进程的数量,设置为HIGH时回滚进程=4*cpu数。

    ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK=HIGH

    回滚操作由于要写入redo文件,其本身就是很消耗系统资源的。当在Oracle中回滚长期运行的事务时,需要查看V$SESSION_LONGOPS并评估还需要多少时间。

    另:跨库插入大量数据时,最好找dba或系统管理员使用expdp/impdp或其他效率更高的方法来操作!

  • 相关阅读:
    luogu4182 [USACO18JAN] Lifeguards P (单调队列优化dp)
    bzoj3277 串 (后缀数组+二分答案+ST表)
    [模板]后缀数组
    bzoj4361 isn (dp+树状数组+容斥)
    luogu4187 [USACO18JAN]Stamp Painting (dp)
    [USACO15DEC]高低卡(白金)High Card Low Card (Platinum)
    USACO环绕岛屿Surround the Islands 并查集 枚举暴力
    5.7 ~ 5.12 刷题列表
    5.4 ~ 5.6 刷题记录
    HNOI2012 永无乡 无旋Treap
  • 原文地址:https://www.cnblogs.com/wbzhao/p/2429072.html
Copyright © 2011-2022 走看看