db file sequential read-数据文件顺序读取

等待事件: "db file sequential read" Reference Note (文档 ID 34559.1)

这种等待事件是一种IO读请求相关的等待。与”db file scattered read“不同,因为”sequential read“是将数据读到连续的内存(注意:这里指的是读到相连的内存,不是说读取的是连续的数据块。同时一次”scattered read“可以读多个块,将他们分散到SGA的不同buffer)。这一事件通常显示与单个数据块相关的读取操作(如索引读取)。如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用驱动表;或者可能说明不加选择地进行索引。

一次”sequential read“通常是单块读,尽管可能看到对于多个块的”sequential read“(见后面的描述)。这种等待也可能在数据文件头读取中看到(P2=1表明是读取文件头)。

ORACLE进程需要访问block不能从SGA中获取的时候,因此oracle进程会等待block从I/O读取到SGA;

一个顺序读是一个单块读,单块I/O一般来自索引读的结果;

db file sequential read等待事件有3个参数:

P1: The absolute file number             文件号

P2: The block being read                first block#

P3: The number of blocks (should be 1)       block数量

db file sequential read等待时间是由于执行对索引,回滚(undo)段,和表(当借助rowid来访问),控制文件和数据文件头的单块读操作SQL语句(用户和递归)引起的。对于这些对象的物理I/O请求是很正常的,因此db file sequential read等待的存在不是一定意味库或应用出错了。如果会话在这事件上花了好长事件,它可能也不是一个糟糕的事情。相反,如果会话花了大量时间在equeue或latch free上,那么一定是有问题。

db file sequential read 是个非常常见的 I/O 相关的等待事件, 通常显示与单个数据块相关的读取操作, 在大多数的情况下, 读取一个索引块或者通过索引读取一个数据块时,都会记录这个等待。
这个等待事件有 3 个参数 P1、 P2、 P3,其中 P1 代表 Oracle 要读取的文件的绝对文件号, P2 代表 Oracle 从这个文件中开始读取的起始数据块块号, P3 代表读取的 BLOCK数量,通常这个值为 1,表明是单个 BLOCK 被读取。

SQL> select name,parameter1,parameter2,parameter3
2 from v$event_name where name='db file sequential read';
NAME PARAMETER1 PARAMETER2 PARAMETER3
------------------------------ ---------- ---------- ----------
db file sequential read file# block# blocks
在 Oracle 10g 中,这个等待事件被归入 User I/O 一类:
SQL> select name,wait_class
2 from v$event_name where name='db file sequential read';
NAME WAIT_CLASS
------------------------------ -------------------------
db file sequential read User I/O

图 9-16 简要说明了单块读取的操作方式。

如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,没有正
确地使用驱动表;或者可能索引的使用存在问题,并非索引总是最好的选择。 在大多数情况下, 通过索引可以更为快速地获取记录,所以对于一个编码规范、调整良好的数据库,这个等待事件很大通常是正常的。 有时候这个等待过高和存储分布不连续、连续数据块中部分被缓存有关,特别对于 DML 频繁的数据表,数据以及存储空间的不连续可能导致过量的单块读,定期的数据整理和空间回收有时候是必须的。
需要注意在很多情况下,使用索引并不是最佳的选择,比如读取较大表中大量的数据,
全表扫描可能会明显快于索引扫描,所以在开发中就应该注意,对于这样的查询应该进行避免使用索引扫描。
从 Oracle 9iR2 开 始 , Oracle 引 入 了 段 级 统 计 信 息 收 集 的 新 特 性 , 可 以 通 过 查 询V$SEGMENT_STATISTICS 视图,找出物理读取显著的索引段或者是表段, 研究其数据结构,看能否通过重建或者重新规划分区、存储参数等手段降低其 I/O 访问。
Oracle 9iR2 中,收集的统计信息共有 11 类

SQL> select * from v$segstat_name;
STATISTIC# NAME SAMPLED
---------- ---------------------------------------- ----------
0 logical reads YES
1 buffer busy waits NO
2 db block changes YES
3 physical reads NO
4 physical writes NO
5 physical reads direct NO
6 physical writes direct NO
8 global cache cr blocks served NO
9 global cache current blocks served NO
10 ITL waits NO
11 row lock waits NO
11 rows selected.
在 Oracle 10gR2 中,这类统计信息增加为 15 个:
SQL> select * from v$segstat_name;
STATISTIC# NAME SAM
---------- ------------------------------ ---
0 logical reads YES
1 buffer busy waits NO
2 gc buffer busy NO
3 db block changes YES
4 physical reads NO
5 physical writes NO
6 physical reads direct NO
7 physical writes direct NO
9 gc cr blocks received NO

10 gc current blocks received NO
11 ITL waits NO
12 row lock waits NO
14 space used NO
15 space allocated NO
17 segment scans NO
15 rows selected.
对于 CBO 模式下的数据库,应当及时收集统计信息,使 SQL 可以选择正确的执行计划,避免因为统计信息陈旧而导致的执行错误等。

问题:AWR报告中的系统的等待事件中的db file sequential read是否合理?

根据awr报告中的以下重要参数进行解读,以11G的awr报告为例子:

说明:db file sequential read是指sga中找不到相应的数据,所以跟buffer hit有很大的关系,当buffer hit命中率太低了,相应的db file sequential read就会高,一般buffer hit保持着95%以上;

查看这个报告的db file sequential read的总时间和平均时间;

Foreground Wait Events也会统计db file sequential read所花费的时间和平均时间

根据SQL User I/O等待时间,查看是否有调优的空间;

db file sequential read的优化方法:

从读取开始,增加SGA中buffer cache的大小,避免每次都从硬盘中去读数;

优化sql语句,减少不必要的块读取;

转自:https://blog.csdn.net/qq_34556414/article/details/80526243

Oracle 等待事件 db file sequential read的更多相关文章

  1. Oracle等待事件db file parallel read

    SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file ...

  2. 等待事件--db file sequential read

    对于最小化db file sequential read 事件所带来的影响,你可以做的另一件事情是减少AVERAGE_WAIT时间. 这是会话必须等待从磁盘提取单块的平均时间,这些信息可以从v$ses ...

  3. ORACLE等待事件: log file parallel write

    log file parallel write概念介绍 log file parallel write 事件是LGWR进程专属的等待事件,发生在LGWR将日志缓冲区(log_buffer)中的重做日志 ...

  4. I/O等待事件-db file scattered read

    摘自:http://blog.csdn.net/zq9017197/article/details/7925338

  5. 全面解析Oracle等待事件的分类、发现及优化

    一.等待事件由来 大家可能有些奇怪,为什么说等待事件,先谈到了指标体系.其实,正是因为指标体系的发展,才导致等待事件的引入.总结一下,Oracle的指标体系,大致经历了下面三个阶段: · 以命中率为主 ...

  6. ORACLE等待事件:read by other session

    read by other session简介 官方关于read by other session的介绍如下: When information is requested from the datab ...

  7. oracle之 db file sequential read等待事件优化思想

    为什么db file sequential read事件在full table scan操作中显现,为什么在多块读中为什么会有单块读存在 ? extent的大小 :当扩展区中的最后一组块仅是1个块,o ...

  8. Oracle等待事件之db file sequential read/ db file parallel read

    1.产生原因 db file sequential read这个是非常常见的I/O 相关的等待事件.表示发生了与索引扫描相关的等待.意味着I/O 出现了问题,通常表示I/O竞争或者I/O 需求太多. ...

  9. db file sequential read等待事件的一点研究

    db file sequential read等待事件有3个参数:file#,first block#,和block数量. 这个等待事件有3个参数P1,P2,P3, 其中P1代表Oracle要读取的文 ...

随机推荐

  1. IntelliJ IDEA 连接数据库 详细过程

    IntelliJ IDEA集成了众多插件,方便开发者使用,使用其自带的Database模块就可以很方便的配置.连接到数据库,本次操作以MySQL为例,其中testjdbc数据库已经提前建好,里面有两张 ...

  2. LightOJ 1199 Partitioning Game(sg函数)题解

    题意:可以把一堆石子分成不相等的两堆,不能操作为败 思路:把一个石子拆成两个,变成了两个独立的游戏,mex里加上两者的sg异或.sg打表. 代码: #include<set> #inclu ...

  3. hdu 6444 网络赛 Neko's loop(单调队列 + 裴蜀定理)题解

    题意:有编号为0~n-1的n个游戏,每个活动都有一个价值(可为负),给你m,s和k,你可以从任意一个编号开始玩,但是下一个游戏必须是编号为(i + k)%n的游戏,你最多能玩m次游戏,问你如果最后你手 ...

  4. BZOJ2563: 阿狸和桃子的游戏 贪心

    Description 阿狸和桃子正在玩一个游戏,游戏是在一个带权图G=(V, E)上进行的,设节点权值为w(v),边权为c(e).游戏规则是这样的: 1. 阿狸和桃子轮流将图中的顶点染色,阿狸会将顶 ...

  5. chromedriver下载安装

    博主开发平台是win10,Python版本是3.6.最近需要用到chromedriver+selenium,下载好selenium后,pip install chromedriver,直接安装到pyt ...

  6. phantomjs在win10下的安装

    phantomjs只能通过官网下载,下载地址:http://phantomjs.org/download.html. 1.最好下载在英文文件夹下.下载完成后,解压. 2.进入bin文件,右击属性,将p ...

  7. NS3 Ptr<Rocket> 与 TcpRocket 的一个小问题

    前因:ns3网络仿真 实验进行到很关键的一步,我尝试进行了代码的编写(还没有添加Traceback的函数),如下: #include "ns3/core-module.h" #in ...

  8. js文字转移效果

    这个例子算是有点样子的. 思路: 字符串操作.左框里面先是预设的.点击按钮时截取左框中的字符串的前一个字符到右框里的字符串后面,以此循环.点击按钮时按钮变为灰色,在循环完成后恢复.计数的总数(右边)是 ...

  9. NYOJ 116 士兵杀敌(二)(二叉索引树)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=116 题意: 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的 ...

  10. Kali Linux下常用软件安装及配置

    0x00 Synaptic Synaptic(新立得)是一个高级软件包管理器,它可以管理系统内安装的每个软件及包组件,在图形界面内完成LINUX系统软件的搜寻.安装和删除. Synaptic安装简单, ...