db file sequential/scattered read

2023-11-01 13:10

本文主要是介绍db file sequential/scattered read,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  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语句执行前:

842673c6a6733428fc62abb27f879926a06.jpg

5ba0a365af584357f02352548b271776c58.jpg

Sql语句执行后:

fb75fca35bdec1f24a4cbba10e08d9f3ea5.jpg

505e0455d6c23e983cc80095f9b7ea24087.jpg

63dc247cd1f627f02c7ec2b88b778d0e001.jpg

  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

忽略

转载于:https://my.oschina.net/u/3862440/blog/2870275

这篇关于db file sequential/scattered read的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323202

相关文章

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

MySQL 筛选条件放 ON后 vs 放 WHERE 后的区别解析

《MySQL筛选条件放ON后vs放WHERE后的区别解析》文章解释了在MySQL中,将筛选条件放在ON和WHERE中的区别,文章通过几个场景说明了ON和WHERE的区别,并总结了ON用于关... 今天我们来讲讲数据库筛选条件放 ON 后和放 WHERE 后的区别。ON 决定如何 "连接" 表,WHERE

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

MySQL日志UndoLog的作用

《MySQL日志UndoLog的作用》UndoLog是InnoDB用于事务回滚和MVCC的重要机制,本文主要介绍了MySQL日志UndoLog的作用,文中介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、Undo Log 的作用二、Undo Log 的分类三、Undo Log 的存储四、Undo

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两