1.低效的SQL

低效的SQL语句时发生cache buffers chains 锁存器争用的最重要原因。多个进程同时扫描大范围的索引或表时,可能广泛

地发生cache buffers chains latch争用。

 低效的SQL语句时怎样引起cache buffers chain latch争用的,我们可以测试进一步进行了解。测试方案如下:

1) 创建cbc_test(id,name)表,对于ID列创建cbc_test_idx索引。ID列是唯一键,是选择性非常好的列。

2)多个会话同时通过cbc_test_idx索引查询扫描cbc_test表

3)广泛的索引扫描引起不必要的缓冲区查询的增加

----创建测试表
SQL> create table cbc_test(id number,name char(100)); 表已创建。 SQL>insert into cbc_test(id,name) select rownum,object_name from dba_objects; SQL> select count(*) from cbc_test; COUNT(*)
----------
217740 ---创建索引
SQL> create index cbc_test_idx on cbc_test(id); 索引已创建。 ---扫描表cbc_test的Procedure
create or replace Procedure cbc_do_select is
begin
--不必要的索引扫描
for x in (select /*+ index(cbc_test cbc_test_idx)*/
*
from cbc_test
where id >= 0) loop
null;
end loop;
end; ---2个会话同时执行 SQL> var job_no number;
begin
for idx in 1 .. 20 loop
dbms_job.submit(:job_no,'cbc_do_select;');
commit;
end loop;
end;SQL> 2 3 4 5 6
7 / PL/SQL 过程已成功完成。 查看ASH信息:
530 1021634 33 15-6?? -14 09.43.26.937 é??? f73c0sc1z2y9k latch: cache buffers chains 57 SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
531 1021634 83 15-6?? -14 09.43.26.937 é??? f73c0sc1z2y9k resmgr:cpu quantum SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
532 1021633 33 15-6?? -14 09.43.25.927 é??? f73c0sc1z2y9k latch: cache buffers chains 57 SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
533 1021633 83 15-6?? -14 09.43.25.927 é??? f73c0sc1z2y9k resmgr:cpu quantum SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
534 1021632 33 15-6?? -14 09.43.24.907 é??? f73c0sc1z2y9k latch: cache buffers chains 57 SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
535 1021632 83 15-6?? -14 09.43.24.907 é??? f73c0sc1z2y9k resmgr:cpu quantum SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
536 1021631 33 15-6?? -14 09.43.23.907 é??? f73c0sc1z2y9k latch: cache buffers chains 57 SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
537 1021631 83 15-6?? -14 09.43.23.907 é??? f73c0sc1z2y9k resmgr:cpu quantum SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
538 1021630 33 15-6?? -14 09.43.22.897 é??? f73c0sc1z2y9k latch: cache buffers chains 57 SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
539 1021630 83 15-6?? -14 09.43.22.897 é??? f73c0sc1z2y9k resmgr:cpu quantum SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0
540 1021629 33 15-6?? -14 09.43.21.877 é??? f73c0sc1z2y9k latch: cache buffers chains 57 SELECT /*+ index(cbc_test cbc_test_idx)*/ * FROM CBC_TEST WHERE ID>=0 查看等待事件;
SID EVENT P1 P2 P3 p1raw
1 33 latch: cache buffers chains 758421644 150 0 000000002D34988C 0
2 83 latch: cache buffers chains 758421644 150 0 000000002D34988C 16 查看latch: cache buffers chains p1 p2 p3 参数: latch: cache buffers chains 等待事件的3 个参数
p1 代表的是内存中latch锁的地址
p2 代表闩锁号
p3 没意义 SELECT OBJ data_object_id, FILE#, DBABLK,CLASS, STATE, TCH from x$bh where HLADDR='P1RAW'; SQL> SELECT OBJ data_object_id, FILE#, DBABLK,CLASS, STATE, TCH,HLADDR from x$bh where HLADDR LIKE '%2D34988C%'; DATA_OBJECT_ID FILE# DBABLK CLASS STATE TCH HLADDR
-------------- ---------- ---------- ---------- ---------- ---------- --------
75499 4 72988 1 1 0 2D34988C
75500 4 73454 1 1 0 2D34988C
75499 7 293294 1 1 0 2D34988C
75451 2 62537 1 1 2 2D34988C SQL> SELECT object_id,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_ID IN (75499,75500,75499,75451); OBJECT_ID OBJECT_NAME
---------- --------------------------------------------------------------------------------------------------------------------------------
75451 WRH$_ACTIVE_SESSION_HISTORY
75499 CBC_TEST
75500 CBC_TEST_IDX HLADDR      RAW(4) Hash Chain Latch Address

低效的SQL引发的cache buffers chains latch的更多相关文章

  1. 热点块引发的cache buffers cahins latch

    热点块引发的Cache buffer Chains latch: SQL语句即便适当进行了调优,有时也无法解决cache buffers cahins latch,若在编写SQL语句时的SQL工作方式 ...

  2. cache buffers chains latch

    cache buffers chains latch 从 Oracle 8i Database 开始, 散列锁存器<-------(1:m)------>hash bucket<-- ...

  3. 【转载】latch: cache buffers chains

    本文转自惜分飞的博客,博客原文地址:www.xifenfei.com/1109.html,支持原创,分享知识! 当一个数据块读入sga区,相应的buffer header会被放置到hash列表上,我们 ...

  4. cache buffers chains以及热块解决方案

    cache buffers chains以及热块解决方案 今天是2013-10-10,今天下午我调休了,中午饭过后从14点一直睡到16点,这种感觉真爽.  之前学习过关于buffer cache的ca ...

  5. [转帖]深入理解latch: cache buffers chains

    深入理解latch: cache buffers chains http://blog.itpub.net/12679300/viewspace-1244578/ 原创 Oracle 作者:wzq60 ...

  6. 关于latch: cache buffers chains的sql优化

    前段时间,优化了一些耗buffer比较多的sql,但是CPU使用率还是没下来 . 查看操作系统CPU使用率 查看awr,发现又有一条超级耗性能的sql冒出来了. 该SQL每次执行耗费3e多个buffe ...

  7. latch:cache buffers chains的优化思路

    数据块在buffer cache存放是以linked list方式存放的.当一个session想要访问/修改buffer cache的block,首先需要通过hash算法检查该block是否存在于bu ...

  8. Oracle索引失效问题:WHERE C1='' OR C2 IN(SubQuery),并发请求时出现大量latch: cache buffers chains等待

    问题描述: 项目反馈某功能响应时间很长,高峰期时系统整体响应很慢... 获取相应的AWR,问题确实比较严重,latch: cache buffers chains等待,因为这些会话SQL执行时间太长, ...

  9. latch: cache buffers chains故障处理总结(转载)

    一大早就接到开发商的电话,说数据库的CPU使用率为100%,应用相应迟缓.急匆匆的赶到现场发现进行了基本的检查后发现是latch: cache buffers chains 作祟,处理过程还算顺利,当 ...

随机推荐

  1. 3D打印论坛

    3D打印论坛:http://www.3done.cn http://www.03dp.com www.qjxxw.net/ http://www.3ddayin.net http://oa.zol.c ...

  2. 1645: [Usaco2007 Open]City Horizon 城市地平线

    1645: [Usaco2007 Open]City Horizon 城市地平线 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 315  Solved: ...

  3. 【转】如何调整visio绘图区域尺寸大小

    原文网址:http://jingyan.baidu.com/article/948f5924033870d80ff5f9f1.html 在使用microsoft visio软件绘图时,为了绘图的质量和 ...

  4. bzoj4034

    http://www.lydsy.com/JudgeOnline/problem.php?id=4034 树链剖分. 跟NOI2015的“软件包管理”一模一样..... 河南的爽死了...... #i ...

  5. Java中的ThreadLocal深入理解

    提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和 ...

  6. Sysbench - 一种系统性能benchmark

    SysBench是一款开源的.跨平台的.模块化的.多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.用于评估操作系统的性能参数. 1      ...

  7. asp.net服务器向客户端弹出对话框,但不使页面边白板

    1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Web; 5: ...

  8. Javascript高级程序设计读书笔记(第二章)

    第二章  在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...

  9. (转)div+css 布局经验 - 最简单的 = 最不变形的(原创技巧)

    站酷几年了 一直饱受其恩泽 尤为感激 一直想奉献些什么 但是苦于水平 苦于奔波 今天静下心来 为大家奉献下 自己的div+css 经验 ,以下观点只代表 深海个人立场 希望为初学者提供一条" ...

  10. .net简单的aspx创建

    在所在项目右键 --添加--新建项--web窗体 产生3个文件: hello.aspx  :页面样式 hello.aspx.cs:后台方法(逻辑处理) hello.aspx.designer.cs(版 ...