文档章节

db file sequential/scattered read

hnairdb
 hnairdb
发布于 2018/11/05 15:37
字数 933
阅读 59
收藏 0
  1. 等待事件:

1:Disk file operations I/O

This event is used to wait for disk file operations (for example, open, close, seek, and resize). It is also used for miscellaneous I/O operations such as block dumps and password file accesses.

Wait Time: The wait time is the actual time it takes to do the I/O.

Parameter

Description

FileOperation

Type of file operation

fileno

File identification number

filetype

Type of file (for example, log file, data file, and so on)

 

我们知道操作系统在操作文件的时候,需要打开文件、关闭文件、定位文件位置等,当这些操作在进行的时候,Oracle就处于等待状态。

 

操作系统的这些文件操作可以划分如下:

1.file creation
2 file open
3 file resize
4 file deletion

5 file close
6 wait for all aio requests to finish
7 write verification
8 wait for miscellaneous io (ftp, block dump, passwd file)
9 read from snapshot files

以上的这些操作大部分跟操作系统的I/O有关系。

  1. 测试

Sql语句执行前:

Sql语句执行后:

  1. 文档说明:
    1. 2.1 db file sequential read(single-block read)

单块读就是一次IO读取一个block,多是通过rowid进行数据读取;Oracle 为所有的单块读取生成db file sequential read事件(既然是单个,当然是连续的,你可以发现db file sequential read 等待事件的P3参数一般都是1). Oracle始终将单个数据块存储在单个缓存块(cache buffer)中,  因此单块读取永远不会产生db file scattered read事件.  对于索引块,如果不是快速全索引扫描,一般都是一个一个块读取的,所以说,这个等待事件很多时候都是索引读取引起的。

    1. 2.2 db file scattered read(multi-block read)

多块读就是一次读取多个block,多在full table scan中;db file scattered read 一般都是等待同时读取多个块到内存中。为了性能和更有效的内存空间利用,oracle一般会把这些块分散在内存中。db file scattered read 等待事件的P3参数指出了每次I/O读取的块数。每次I/O读取多少个块, 由参数db_file_multiblock_read_count控制。 全表扫描或者快速全索引扫描时一般使用的这种读取块的方式,所以,该等待很多时候都是因为全表扫描引起的 ;在大部分情况下, 全表扫描与快速全索引扫描都会产生一次或多次db file scattered read.

 

等待问题

可能的解决方法

Sequential Read

表明有很多索引读——调整代码(特别是表连接部分)

Scattered Read

表明有很多全表扫描——调整代码、将小表放入内存

Free Buffer

增大 DB_CACHE_SIZE、加速检查点和调整代码

Buffer Busy

段头——增加 freelists 或者 freelist groups

Buffer Busy

数据块——分离“热点”数据、采用反向关键字索引、采用小的数据块

Buffer Busy

数据块——增大 initrans 和 maxtrans

Buffer Busy

undo header——增加回滚段

Buffer Busy

undo block——增加提交频度、增大回滚段

Latch Free

研究 Latch 细节(可以参考下文)

Enqueue - ST

使用本地表空间或者预先分配大扩展

Enqueue - HW

预先分配扩展于高水位线之上

Enqueue - TX4

增大表或索引的 initrans 和 maxtrans

Enqueue - TM

为外键建立索引,查看应用程序中的表锁

Log Buffer Space

增大日志缓冲区,重做日志放在快速磁盘上

Log File Switch

归档设备太慢或者太满,增加或者扩大重做日志

Log File Sync

每次提交更多记录、更快的存放重做日志的磁盘、裸设备

Idle Event

忽略

© 著作权归作者所有

上一篇: log file sync
下一篇: ora-01122,ora-01110
hnairdb
粉丝 24
博文 129
码字总数 127249
作品 0
深圳
数据库管理员
私信 提问
加载中

评论(0)

[Oracle] 常见的等待事件

db file scattered read 对于一些频繁访问的表,如果没有建立索引或没有建立合适的索引,Oracle只能对其进行全表扫描,就会导致大量该等待事件。 全表扫描时,读取的数据在磁盘上一般是连续的...

长平狐
2013/06/03
164
0
[Oracle] 常见的等待事件

db file scattered read 对于一些频繁访问的表,如果没有建立索引或没有建立合适的索引,Oracle只能对其进行全表扫描,就会导致大量该等待事件。 全表扫描时,读取的数据在磁盘上一般是连续的...

长平狐
2013/06/03
49
0
Oracle 等待事件之 db file sequential read

db file sequential read: 官网解释: This event signifies that the user process is reading a buffer into the SGA buffer cache and is waiting for a physical I/O call to return. A......

wangergui
2017/04/04
0
0
SQL调优:Clustering Factor影响数据删除速度一例

事情是这样的,客户有一套核心的10g业务数据库,需要针对个别大表删除2年前的归档数据,这些表都是普通的堆表(heap table),没有使用分区或其他技术。因为考虑到不能影响在线业务,所以不能使...

科技小能手
2017/11/12
0
0
等待事件:read by other session

一、等待事件介绍 This event occurs when a session requests a buffer that is currently being read into the buffer cache by another session. Prior to release 10.1, waits for this ......

猎人笔记
2014/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

展示如何在checkout里使用quote,quote item, address, shopping cart

展示如何更改并且在定制化的时候高效应用这些模块。 以下实体继承 \Magento\Framework\Model\AbstractExtensibleModel ,所以你可以使用第4章中讨论的可扩展属性。 Quote Quotes 是客户购物车...

忙碌的小蜜蜂
28分钟前
8
0
面向对象思想设计原则及常见设计模式

1、面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则 1.1、单一职责原则 高内聚,低耦合 每个类应该只有一个职责,...

庭前云落
36分钟前
25
0
fastadmin对接支付宝支付,遇到的问题之一二

一开始也没做过支付宝支付相关的东西 本来用的fastadmin的epay插件来配置支付宝的,本来以为会so easy,但是实际上还是遇到了一些问题,花了几天时间,把沙箱环境配置起来了... 算是一个良好的开...

老bia同学
37分钟前
5
0
记录一题生产者消费者问题

//有一个容器,能存储一定的产品,有put和get方法,有两个生产者,8个消费者的线程阻塞 import java.util.LinkedList; import java.util.concurrent.TimeUnit; public class Test3<T> { Lin...

南桥北木
47分钟前
13
0
线程池源码解读——回归基础

线程池源码解读——回归基础 线程池源码解读——回归基础 线程池的好处: JDK提供的创建线程池: java 中创建线程的方式: 线程池源码解读: 记录的知识点: 线程池的好处: 降低资源的开销 ...

lihua20103181
50分钟前
100
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部