关闭

local write wait等待事件另一种情况

222人阅读 评论(0) 收藏 举报
 一个数据仓库的系统,在AWR报告中出现靠前的等待时间为LOCAL WRITE WAIT和Eq:RO Fast Object Reuse. 分析相关的语句为TRUNCATE一个中间表。RO队列的意义可以从V$LOCK_TYPE中检索到。

SQL> SELECT DESCRIPTION FROM V$LOCK_TYPE WHERE TYPE='RO';

DESCRIPTION
--------------------------------------------------------------------------------
Coordinates flushing of multiple objects
字面上的意思是协调清空多个对象。分析应用,该语句发生在ETL过程中,主要步骤为填充中间表,修改中间表,TRUNCATE中间表。在调度程序中有较多该流程的过程 . 
        在TRUNCATE 和DROP TABLE的时候, ORACLE必须使DATA BUFFER中所有该对象的数据块失效或者刷新到磁盘,步骤为此时请求RO队列锁,找缓冲区中该对象的块,并使其无效化或者刷新到磁盘,然后释放RO锁,如果多个进程并发地进行TRUNCATE的时候,就会在RO队列上发生竞争,表现为等待事件Eq: RO fast object reuse. 如果TRUNCATE等待相关的块刷新到磁盘,就表现为等待时间local write wait.
       这个问题的发生有两个原因:1 I/O慢2 并行TRUNCATE.
       该问题不能通过增大BUFFER CACHE来解决,BUFFER CACHE 愈大,搜寻相关数据块的时间愈长。
       处理的方法
1  可以对这种类型的中间表使用非默认块大小的表空间,在CACHE BUFFER中设定不同块大小的缓冲区。减小搜寻相关数据块的时间,降低竞争。
2 保证DBWn写入的效率。 
        这个问题还可以参考:
http://blog.psftdba.com/2009/01/performance-implications-of-concurrent.html
和METALINK NOTES 334822.1
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:39814次
    • 积分:744
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:133篇
    • 译文:0篇
    • 评论:0条