与IO相关的等待事件troubleshooting-系列6

简介: 'db file parallel read'        当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。

'db file parallel read'

        当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。在恢复操作或为了优化而预处理缓冲(代替执行多个单块读)时也会有这种等待事件。

        如果这种等待事件的事件占据大部分,可以按照“db file sequential read”的处理方法。


Direct Path Reads and Writes

直接路径读与写


'direct path read'

Document 50415.1WAITEVENT: "direct path read" Reference Note


'direct path write'

Document 50416.1 WAITEVENT: "direct path write" Reference Note


'direct path read (lob)'

'direct path write (lob)'


        当数据库进程在磁盘与进程PGA内存之间执行一些特殊类型的多块IO操作时,会出现这种等待事件,这种操作会绕过Buffer Cache。可以同步或异步两种方式执行这样的IO操作。

       使用这种方式的一些例子:

1. 当内存排序区满了,使用临时表空间排序时,对IO的排序操作。

2. 并行执行(查询和DML)。

3. 预读操作(buffer预处理)。

4. 直接读取操作。

5. 对LOB段的IO操作(LOB段不会缓存到Buffer Cache)。

        用这种方式中等待的时间都会被记录(不会衡量用于执行IO操作的时间),但不能用Statspack的“Top 5 Wait/Timed Events”节中列表的相对位置来评估他们的真实影响。

        调优的纲领:

1. 建议使用异步IO。

2. 在Oracle 8i,通过设置DB_FILE_DIRECT_IO_COUNT实例参数最小化IO请求数量,DB_BLOCK_SIZE x DB_FILE_DIRECT_IO_COUNT = 系统的max_io_size。

        在Oracle 8i中,默认值是64个块。

        (在Oracle 9i,他被_DB_FILE_DIRECT_IO_COUNT参数取代,这个参数控制以字节(不是块)为单位的直接IO容量)。默认值是1Mb,但是如果系统的max_io_size更小,那默认值也会被缩小。

        可参考:Document 47324.1 Init.ora Parameter "DB_FILE_DIRECT_IO_COUNT" Reference Note。

3. 调整内存排序区,以使磁盘排序的磁盘IO最小化。

        在9i之前,使用自动SQL执行内存管理。(Document 147806.1 Automated SQL Execution Memory Management)

        在8i,手动调整不同的排序区。(Document 109907.1 How to Determine an Optimal SORT_AREA_SIZE)

4. 对于LOB段,可以存储到操作系统的文件系统中。

        Buffer Cache能够提供一些内存缓冲。

5. 通过查询V$SESSION_EVENT(等待事件)或V$SESSTAT(统计数据),明确执行直接IO操作的session。

 'physical reads direct', 'physical reads direct (lob)',

 'physical writes direct' & 'physical writes direct (lob)'

对这些SQL语句调优。

6. 根据V$FILESTAT或Statspack的“File IO Statistics”节,明确哪些数据文件是磁盘存储的瓶颈,将他们移到其他磁盘。


(未完待续)

目录
相关文章
|
存储 SQL
与IO相关的等待事件troubleshooting-系列7
与控制文件IO相关的等待事件:         这种等待事件通常产生于一个或多个控制文件的IO。像redo日志切换和检查点事件,都会产生频繁的控制文件访问。
769 0
|
关系型数据库 Oracle 数据库
与IO相关的等待事件troubleshooting-系列8
与Redo日志IO相关的等待事件:         Redo日志活动期间会有很多的等待事件,而且他们大多是和IO相关的。最重要的两个就是‘log file sync’和‘log file parallel write’。
720 0
|
数据库 关系型数据库 Oracle
与IO相关的等待事件troubleshooting-系列9
Buffer Cache与IO相关的等待事件:         这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作。
887 0
|
SQL Oracle 关系型数据库
与IO相关的等待事件troubleshooting-系列4
与数据文件IO相关的等待事件: 接下来的等待事件是与数据文件的IO操作时产生的。 'db file sequential read'         这是一种最常见的IO相关的等待。
917 0
|
SQL Oracle 关系型数据库
与IO相关的等待事件troubleshooting-系列5
'db file scattered read'         这是另一种常见的等待事件。他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续("scattered")缓存的时候。
1013 0
|
存储 数据库 关系型数据库
与IO相关的等待事件troubleshooting-系列1
近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。 这个应用所在磁盘的IO较差,原因在于这块磁盘较旧,已进入更换的流程,但短期内还不能更换,对应用是个极大的隐患。
742 0
|
Oracle 关系型数据库 数据库
与IO相关的等待事件troubleshooting-系列2
Troubleshooting步骤: Troubleshooting与IO相关的等待: 数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。
1067 0
|
SQL 存储 Oracle
与IO相关的等待事件troubleshooting-系列3
解决IO问题的常用方法:         使用Statspack类似的工具对数据库响应时间分析之后,已经表明与IO相关的等待事件限制了系统性能,有许多的方法可以判断这种问题。
787 0