Insert 和Insert 引发的buffer busy waits
多个会话同时对同一个表执行Insert操作时,段的区域将急速扩大,因此引发多种性能问题。Buffer lock争用引起的buffer busy waits等待现象就是其中之一。
---创建测试表空间
create tablespace bfw_tbs_1 datafile '/u03/test/ukja_test_01.dbf' size 50M
autoextend on
extent management local uniform size 1M
segment space management auto
---创建表
drop table bfw_test;
create table bfw_test(id char(1000)) tablespace bfw_tbs;
---执行大量的insert 的procedure
create or replace procedure bfw_do_insert
is
begin
for idx in 1 .. 10000 loop
insert into bfw_test values('');
end loop;
commit;
end;
---10个会话同时执行Insert
var job_no number;
begin
for idx in 1 .. 1000 loop
dbms_job.submit(:job_no,'bfw_do_insert;');
commit;
end loop;
end;
----查看等待事件:
1 24-6月 -14 02.53.07.143 下午 12 buffer busy waits 6 46385 1 0 76849 6 46385
2 24-6月 -14 02.53.07.143 下午 16 enq: HW - contention 1213661190 7 25235715 0 1 201 2
3 24-6月 -14 02.53.07.143 下午 17 buffer busy waits 6 888 1 0 76849 6 888
4 24-6月 -14 02.53.07.143 下午 18 enq: HW - contention 1213661190 7 25235715 0 76849 6 69891
5 24-6月 -14 02.53.07.143 下午 20 enq: HW - contention 1213661190 7 25235715 0 76849 6 69891
6 24-6月 -14 02.53.07.143 下午 22 enq: HW - contention 1213661190 7 25235715 0 1 201 2
7 24-6月 -14 02.53.07.143 下午 24 enq: HW - contention 1213661190 7 25235715 0 76849 6 69891
8 24-6月 -14 02.53.07.143 下午 26 buffer busy waits 6 46385 1 0 76849 6 46385
9 24-6月 -14 02.53.07.143 下午 28 buffer busy waits 6 301 1 0 76849 6 301
10 24-6月 -14 02.53.07.143 下午 30 enq: HW - contention 1213661190 7 25235715 0 1 201 2
11 24-6月 -14 02.53.07.143 下午 32 log file sync 5934 7135725 0 0 76849 6 69891
12 24-6月 -14 02.53.07.143 下午 34 enq: HW - contention 1213661190 7 25235715 0 1 201 2
13 24-6月 -14 02.53.07.143 下午 36 enq: US - contention 1431502854 333 0 0 76849 6 69891
14 24-6月 -14 02.53.07.143 下午 38 enq: HW - contention 1213661190 7 25235715 0 1 201 2
15 24-6月 -14 02.53.07.143 下午 40 enq: US - contention 1431502854 333 0 0 76849 6 625
16 24-6月 -14 02.53.07.143 下午 42 enq: US - contention 1431502854 333 0 0 -1 0 0
17 24-6月 -14 02.53.07.143 下午 44 enq: HW - contention 1213661190 7 25235715 0 76849 6 69891
18 24-6月 -14 02.53.07.143 下午 46 buffer busy waits 6 697 1 0 76849 6 697
19 24-6月 -14 02.53.07.143 下午 48 enq: HW - contention 1213661190 7 25235715 0 76849 6 69891
20 24-6月 -14 02.53.07.143 下午 50 enq: HW - contention 1213661190 7 25235715 0 1 201 2
21 24-6月 -14 02.53.07.143 下午 52 buffer busy waits 6 301 1 0 76849 6 301
如上所示,与buffer busy waits等待一起大量的enq: HW - contention
执行Insert时修改段块是为了修改空闲列信息或修改(High Water Mark 高水位线).修改HWM的过程中,HW锁争用现在一同发生,因此发生了enq: HW - contention等待事件。