日期:2014-05-16  浏览次数:20339 次

Resolving Issues Where Application Queries are Waiting Too Frequently for 'db file sequential read'

昨天有篇“db file sequential read”的介绍,还有一篇类似的:Resolving Issues Where Application Queries are Waiting Too Frequently for 'db file sequential read' Operations (文档 ID 1475825.1)


诊断“db file sequential read”的步骤

简述

低效的SQL会引起不同节点间非常多的块读。


问题确认

花费在本地数据库的active时间非常明显。

仅一些session,查询或job变慢(不是整个数据库)。

“db file sequential read”等待是整个DB time中占比最大的组件。

“db file sequential read”等待操作不慢(IO的平均时间没超过标准IO性能(例如少于20毫秒))。


等待“db file sequential read”操作太频繁的应用查询

等待“db file sequential read”事件指的是一个session正在等待一次从磁盘读到内存的单块读以满足查询的要求。

假设完成一次IO操作的平均时间是正常的(例如单次IO花费时间少于20毫秒),那么相比于单次IO操作的时间,花费在“db file sequential read”的总时间必须降到与IO次数相匹配。

如果“db file sequential read”等待次数太多,单条SQL又极消耗资源,那么这些查询的确可能需要调优以选择一种更能接受的执行路径,减少资源消耗。

为了确定哪些查询等待“db file sequential read”最多,需要采集与AWR报告相同时间段的ASH报告。在报告中,查找等待次数最多的查询。可以与AWR报告关联起来,根据CPU,IO和SQL统计节中的buffer gets的标准测量,判断查询的总体性能。

一旦有问题的语句已经确认,可以参考Document 223117.1 Troubleshooting I/O-related waits的“Reduce the I/O requirements of the database by tuning SQL”节中的方法,使用其中的方法提高这些语句的性能。

如果相比于太多这种等待事件,IO确实存在问题,那么可以参考下面的细节:

Document 1476092.1 Troubleshooting IO Performance Problems Impacting Scattered Reads

Document 262687.1 How to use the Sql Tuning Advisor

Document 1195363.1 Database Performance and SQL


衡量正确性

一旦已经尝试如上方法,对比最新的AWR与标准AWR(AWR是基线)。查找这种等待事件总体时间减少的百分比。如果仍有问题,需要重新分析这些问题,根据他们具体的现象定位具体的问题。