Insert 和Insert 引发的buffer busy waits

时间:2021-04-13 04:03:00
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;

----查看等待事件:
124-6月 -14 02.53.07.143 下午12buffer busy waits6463851076849646385
224-6月 -14 02.53.07.143 下午16enq: HW - contention1213661190725235715012012
324-6月 -14 02.53.07.143 下午17buffer busy waits688810768496888
424-6月 -14 02.53.07.143 下午18enq: HW - contention1213661190725235715076849669891
524-6月 -14 02.53.07.143 下午20enq: HW - contention1213661190725235715076849669891
624-6月 -14 02.53.07.143 下午22enq: HW - contention1213661190725235715012012
724-6月 -14 02.53.07.143 下午24enq: HW - contention1213661190725235715076849669891
824-6月 -14 02.53.07.143 下午26buffer busy waits6463851076849646385
924-6月 -14 02.53.07.143 下午28buffer busy waits630110768496301
1024-6月 -14 02.53.07.143 下午30enq: HW - contention1213661190725235715012012
1124-6月 -14 02.53.07.143 下午32log file sync593471357250076849669891
1224-6月 -14 02.53.07.143 下午34enq: HW - contention1213661190725235715012012
1324-6月 -14 02.53.07.143 下午36enq: US - contention14315028543330076849669891
1424-6月 -14 02.53.07.143 下午38enq: HW - contention1213661190725235715012012
1524-6月 -14 02.53.07.143 下午40enq: US - contention143150285433300768496625
1624-6月 -14 02.53.07.143 下午42enq: US - contention143150285433300-100
1724-6月 -14 02.53.07.143 下午44enq: HW - contention1213661190725235715076849669891
1824-6月 -14 02.53.07.143 下午46buffer busy waits669710768496697
1924-6月 -14 02.53.07.143 下午48enq: HW - contention1213661190725235715076849669891
2024-6月 -14 02.53.07.143 下午50enq: HW - contention1213661190725235715012012
2124-6月 -14 02.53.07.143 下午52buffer busy waits630110768496301


如上所示,与buffer busy waits等待一起大量的enq: HW - contention

执行Insert时修改段块是为了修改空闲列信息或修改(High Water Mark 高水位线).修改HWM的过程中,HW锁争用现在一同发生,因此发生了enq: HW - contention等待事件。