ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库中db file sequential read事件

数据库中db file sequential read事件

原创 Linux操作系统 作者:junnior 时间:2008-08-22 10:52:50 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 发现数据库中db file sequential read事件很高,了解了一下。
1.db file sequential read 
事件
oracle
的官方解释:
  

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4

sequential read reads data into contiguous memory (whilst a scattered read reads multiple blocks and scatters them into different buffers in the SGA).
   The IO is generally issued as a single IO request to the OS - the wait blocks until the IO request completes.
   
相对于scattered read一次读入多个block, sequential read一次进行单个块的读取,联系到执行计划可以得出 sequential read一般发生在进行索引扫描时(当然有的全表扫描也可能发生),主要从index,rollback(or undo) segments, tables(通过rowid访问表),control files 和data file headers中进行single-block read.,而scattered read一般发生在全表扫描。因此针对db file sequential read等待过高的情况可以从索引的角度进行分析。
  
“访问数据对象(table,index)总是会产生Physical I/o需求,当出现db file sequential read等待事件时,并不意味着数据库产生系统问题,基至它大量出现都不是一件坏事.真正要引起注意的是像enqueue 和latch free等待事件,它们总是引起系统性能问题的根源.并且它们使single-block(单块读取)变得因难了.”(Thomas.Woo 的读书笔记)

2.
可以通过一下脚本发现哪个session正在进行db file sequential read事件



Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4

SELECT sid, total_waits, time_waited
    FROM v$session_event
        WHERE event='db file sequential read'
                        and total_waits>0
       ORDER BY 3,2
同时可以查看:
  
通过视图:V$SQL查找高的DISK_READS的sql语句
  
通过视图V$SESSTAT查找高的"physical reads"。


3.
解决方法:
  
(1) 增大DB_BLOCK_BUFFERS的值是常用的方法之一。
  
(2) 检查是否使用了不合适的索引扫描的SQL,优化SQL语句。(3) 对大表进行分区。
  
(4) 是否有index碎片,考虑重建索引。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15017002/viewspace-432964/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: oracle回滚段学习
请登录后发表评论 登录
全部评论

注册时间:2008-08-21

  • 博文量
    6
  • 访问量
    11123