Db file parallel read
这是一个很容易引起误导的等待事件,实际上这个等待事件和并行操作(比如并行查询,并行DML)没有关系。 这个事件发生在数据库恢复的时候,当有一些数据块需要恢复的时候,Oracle会以并行的方式把他们从数据文件中读入到内存中进行恢复操作。
这个等待事件包含三个参数:
Files: 操作需要读取的文件个数。
Blocks: 操作需要读取的数据块个数。
Requests: 操作需要执行的I/O次数。
案例分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
11
:
06
:
16
SYS@ prod>conn scott/tiger
Connected.
11
:
06
:
19
SCOTT@ prod>
insert
into
emp1 select *
from
emp1;
286720
rows created.
Elapsed:
00
:
00
:
02.04
11
:
07
:
22
SCOTT@ prod>/
573440
rows created.
11
:
08
:
07
SYS@ prod>r
1
select event,TOTAL_WAITS,AVERAGE_WAIT
from
v$system_event
2
*
where
upper(event) like
'DB FILE%'
EVENT TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read
4449
.04
db file scattered read
1650
.02
db file single write
36
.39
db file async I/O submit
133
8.69
db file parallel read
37
.19
Elapsed:
00
:
00
:
00.02
11
:
08
:
20
SYS@ prod>r
1
select event,TOTAL_WAITS,AVERAGE_WAIT
from
v$system_event
2
*
where
upper(event) like
'DB FILE%'
EVENT TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read
7561
.03
db file scattered read
1785
.02
db file single write
36
.39
db file async I/O submit
160
10.29
db file parallel read
39
.19
Elapsed:
00
:
00
:
00.02
|
Db file parallel write
这是一个后台等待事件,它同样和用户的并行操作没有关系,它是由后台进程DBWR产生的,当后台进程DBWR向磁盘上写入脏数据时,会发生这个等待。
DBWR会批量地将脏数据并行地写入到磁盘上相应的数据文件中,在这个批次作业完成之前,DBWR将出现这个等待事件。如果仅仅是这一个等待事件,对用户的操作并没有太大的影响,当伴随着出现free buffer waits等待事件时,说明此时内存中可用的空间不足,这时候会影响到用户的操作,比如影响到用户将脏数据块读入到内存中。
当出现db file parallel write等待事件时,可以通过启用操作系统的异步I/O的方式来缓解这个等待。当使用异步I/O时,DBWR不再需要一直等到所有数据块全部写入到磁盘上,它只需要等到这个数据写入到一个百分比之后,就可以继续进行后续的操作。
这个等待事件有两个参数:
Requests: 操作需要执行的I/O次数。
Timeouts: 等待的超时时间。
案例分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
1
、关闭ASYNC I/O:
11
:
25
:
47
SYS@ prod>show parameter sync
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io boolean FALSE
tape_asynch_io boolean TRUE
11
:
25
:
53
SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT
from
v$system_event
11
:
25
:
58
2
where
upper(event) like
'DB FILE%'
;
EVENT TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read
2036
.02
db file scattered read
844
.01
db file single write
27
.69
db file parallel write
38
1.69
2
、用户进行事务操作
11
:
24
:
02
SCOTT@ prod>conn scott/tiger
Connected.
11
:
26
:
19
SCOTT@ prod>begin
11
:
26
:
38
2
for
i
in
1.
.100000
loop
11
:
26
:
38
3
execute immediate
'insert into t1 values ('
||i||
')'
;
11
:
26
:
38
4
end loop;
11
:
26
:
38
5
end;
11
:
26
:
38
6
/
11
:
24
:
06
TOM@ prod>conn tom/tom
Connected.
11
:
26
:
47
TOM@ prod>begin
11
:
26
:
57
2
for
i
in
1.
.100000
loop
11
:
26
:
57
3
execute immediate
'insert into scott.t1 values ('
||i||
')'
;
11
:
26
:
57
4
end loop;
11
:
26
:
57
5
end;
11
:
26
:
57
6
/
11
:
22
:
41
SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT
from
v$system_event
2
*
where
upper(event) like
'DB FILE%'
EVENT TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read
3216
.02
db file scattered read
846
.01
db file single write
27
.69
db file parallel write
67
2.78
Elapsed:
00
:
00
:
00.02
3
、解决方法
11
:
22
:
42
SYS@ prod>show parameter sync
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io boolean TRUE
tape_asynch_io boolean TRUE
11
:
22
:
43
SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT
from
v$system_event
2
*
where
upper(event) like
'DB FILE%'
EVENT TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read
11801
.05
db file scattered read
1920
.03
db file single write
54
.35
db file async I/O submit
266
7.78
db file parallel read
39
.19
'db file parallel write '
等待事件消失 !
|
本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1535849,如需转载请自行联系原作者