前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[AWR报告]db file sequential read

[AWR报告]db file sequential read

作者头像
bsbforever
发布2020-08-19 14:19:46
1.1K0
发布2020-08-19 14:19:46
举报

开始讲解awr报告Top 5 Timed Events部分

今天讲db file sequential read 等待事件

Oracle和Python内容会交替着写


db file sequential read

物理读发生在一个用户需要的数据块不在SGA,从而将其从磁盘读取到SGA中

如果此时别的会话需要该数据块则必须等待这个过程结束,这时就产生了等待

顺序读是物理读的一种方式,这里的顺序指的是读取数据块到一个连续的内存区域,而且总是读取单个数据块(single-block read)

这点不同于scattered read,这个将在下节讲述


何时会发生

单个数据块读(single-block read)是由SQL语句引起的(用户发出或者递归调用)

一般发生在以下情况:

  1. 索引扫描
  2. 表扫描(access by rowid)
  3. 全表扫描(很少发生,例如刚好在extent边缘恰巧被分割成单块,或者已经在buffer cache中)

如何处理

由于物理读是非常正常的,出现这个等待事件不意味着数据库出现性能问题

但是如果我们在TOP 5 Wait Event中看到其处于非常前的位置(第二甚至第一)时就需要引起我们的注意了

特别需要关注Avg Waits 参数,最好小于1ms,这里可采用如下方法进行解决

  1. 将数据文件放在高速磁盘中,提高读取性能,避免热块
  2. 将数据文件放在LUN(即一些存储设备)中,可确保数据块分散在足够多的磁盘中

如果平均等待时间是可接受范围,但是还是有大量的sequential read等待,这往往是应用的问题,可能是索引使用不当导致,这时我们需要通过P1 P2 参数定位到具体的对象,通过执行计划判断索引是否合理,是否需要走全表扫描等等方式来进行优化

如下是一些常用的诊断方式,通过如下方式定位到具体的会话,在通过sql_id或hash_value找出具体的语句用于优化


查看当前正在等待的会话

我们可以查看v$session_wait 视图的TIME_WAITED栏位来定位当前哪个会话等待 sequential read过长时间(实时)

select * from v$session_Wait where event = 'db file sequential read'


P1代表File ID,可通过dba_data_File视图的FILE_ID字段看出是哪个数据文件

P2代表 First block,即该块在数据文件上开始的位置

P3代表块数,由于sequential read为单块读,则该值始终为1

我们可以通过P1 P2参数得出对象的名称和类型

select segment_name, segment_type from dba_extents where file_id = 128 and 3277531 between (block_id and block_id + blocks - 1);


查看从实例启动以来等待的会话

使用 v$session_event视图来定位哪个会话等待 sequential read过长时间(非实时)

也可使用v$system_event视图查看系统整体的等待事件

SELECT sid, total_waits, time_waited FROM v$session_event WHERE event='db file sequential read' and total_waits>0 ORDER BY 3 desc ,2

注意由于SID是可以复用的,这样查出来的有可能有问题

比如查看SID为617的会话对应的语句也有可能是上个SQL语句导致的sequential read等待,这点需要注意


查看高物理读的数据文件

我们可以通过awr报告中的 Tablespace IO Stats 和File IO Stats 区域来定位最多IO操作的表空间和数据文件,如果可以请将其放置在高速的磁盘中(SSD)


查看高物理读的SQL语句 同样可以查看v$sql中高物理读的语句以及awr SQL ordered by Reads区域


参考资料

  1. http://www.dba-oracle.com/m_db_file_sequential_read.htm
  2. https://logicalread.com/oracle-db-file-sequential-read-wait-event-part2-mc01/#.WXBpyoh97cs
  3. http://www.dba-oracle.com/art_otn_waits.htm
  4. https://www.toadworld.com/platforms/oracle/w/wiki/788.db-file-sequential-read

下期预告

db file scattered read

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档