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

简介: 'db file scattered read'        这是另一种常见的等待事件。他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续("scattered")缓存的时候。

'db file scattered read'

        这是另一种常见的等待事件。他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续(" scattered")缓存的时候。这种读一次最大值是 DB_FILE_MULTIBLOCK_READ_COUNT。这种典型场景像全表扫描(Full Table Scans)和全索引快速扫描(Fast Full Index
scans)。
        如果这个等待事件占据大部分等待时间,下面的方法可以用到:
1. 找到执行全表扫描或全索引快速扫描的SQL语句,进行调优以确保这些扫描是必须的,而不是非最优执行计划导致的。
        从Oracle 9i开始,新的V$SQL_PLAN视图可以帮上忙:(忽略在这些查询结果中的数据字典SQL)
对于全表扫描:
select sql_text from v$sqltext t, v$sql_plan p
where t.hash_value=p.hash_value and p.operation='TABLE ACCESS'
and p.options='FULL'
order by p.hash_value, t.piece;
对于全索引快速扫描:
elect sql_text from v$sqltext t, v$sql_plan p
where t.hash_value=p.hash_value and p.operation='INDEX'
and p.options='FULL SCAN'
order by p.hash_value, t.piece;
        在Oracle 8i,对于这种等待事件,通过查询V$SESSION_EVENT可以找到执行多块读的session,然后使用SQL Tracing跟踪这些session的SQL。另外,物理读Top前几位的SQL语句也能用来研究,判断他们的执行计划是否包含了全表扫描或全索引快速扫描。

2. 在这样最优执行计划就是多块读扫描的场景,可以通过调整多块IO的容量进行调优,需要修改实例参数DB_FILE_MULTIBLOCK_READ_COUNT,计算:DB_BLOCK_SIZE x DB_FILE_MULTIBLOCK_READ_COUNT = 系统的max_io_size。
(可参考:
Document 30712.1 Init.ora Parameter "DB_FILE_MULTIBLOCK_READ_COUNT" Reference
Document 1037322.6 WHAT IS THE DB_FILE_MULTIBLOCK_READ_COUNT PARAMETER?)
        正如之前所说的,从Oracle 10g R2开始,DB_FILE_MULTIBLOCK_READ_COUNT初始化参数现在可以自动调优,当未显示设置时可以使用一个默认值。这个默认值和可以高效执行的最大IO容量相关。参数值依赖于平台,对于大多数平台是1MB。因为参数是以块表示的,所以也可以设置为一个和可以高效执行的最大IO容量相当的值(被标准块容量切分)。

3.  因为使用全表扫描和全索引快速扫描的块会放到Buffer Cache取代链的最少最近使用端,有时使用多Buffer Pools,将这些段放到KEEP池中都会有所帮助。(可参考:Document 76374.1 Multiple Buffer Pools)

4. 使用分区能够降低作为分区剪裁扫描数据的数量,限制段分区的扫描子集。

5. 最后,可以考虑最长访问的段包含的数据数量(通过将旧的、不需要的数据移出数据库),或将这些段移动到新的、更快的磁盘,以降低IO的响应时间。

(未完待续)
目录
相关文章
|
数据库 关系型数据库 Oracle
与IO相关的等待事件troubleshooting-系列9
Buffer Cache与IO相关的等待事件:         这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作。
887 0
|
存储 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
|
SQL Oracle 关系型数据库
与IO相关的等待事件troubleshooting-系列4
与数据文件IO相关的等待事件: 接下来的等待事件是与数据文件的IO操作时产生的。 'db file sequential read'         这是一种最常见的IO相关的等待。
917 0
|
SQL 存储 Oracle
与IO相关的等待事件troubleshooting-系列6
'db file parallel read'         当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。
866 0
|
SQL 存储 Oracle
与IO相关的等待事件troubleshooting-系列3
解决IO问题的常用方法:         使用Statspack类似的工具对数据库响应时间分析之后,已经表明与IO相关的等待事件限制了系统性能,有许多的方法可以判断这种问题。
787 0
|
存储 数据库 关系型数据库
与IO相关的等待事件troubleshooting-系列1
近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。 这个应用所在磁盘的IO较差,原因在于这块磁盘较旧,已进入更换的流程,但短期内还不能更换,对应用是个极大的隐患。
742 0
|
Oracle 关系型数据库 数据库
与IO相关的等待事件troubleshooting-系列2
Troubleshooting步骤: Troubleshooting与IO相关的等待: 数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。
1067 0