热点块引发的Cache buffer Chains latch:
SQL语句即便适当进行了调优,有时也无法解决cache buffers cahins latch,若在编写SQL语句时的SQL工作方式,
只是持续扫描少数特定块,则在多个会话同时执行此SQL语句时,就会发生Hot Block引起的cache buffers chains latch争用。
测试方案如下:
1) 创建与测试相同的表和索引。
2) 即便有效扫描索引,多个会话也会反复扫描相同的块,因此发生Hot Block引起的cache buffers chains latch争用。
SQL> create or replace Procedure cbc_do_select(p_from in NUMBER,
2 p_to IN NUMBER) is
3 begin
4 -- 反复,集中扫描特定块
5 for idx in 1 .. 3000 loop
6 for x in (select id from cbc_test where id between p_from and p_to) loop
7 null;
8 end loop;
9 end loop;
10 end;
11 /
Procedure created
---同时执行20个读取工作
var job_no number;
begin
for idx in 1 .. 20 loop
dbms_job.submit(
热点块引发的cache buffers cahins latch
最新推荐文章于 2021-04-11 08:11:13 发布
本文探讨了SQL语句优化后仍然存在的cache buffers chains latch问题,重点在于热点块引起的争用。通过创建并执行测试用例,展示了多个会话执行相同SQL时如何导致hot block和latch争用。通过对v$latch_children和v$session_wait视图的分析,确定了问题的根源,并提供了利用x$bh视图识别hot block的方法。
摘要由CSDN通过智能技术生成