[20150123]热链竞争.txt
[20150123]热链竞争.txt
--最近一段时间都在看vage的,提到CBC latch保护多个链表,而且还要保护BH的读和修改操作.而一个链表中,可能
--会有多个BH,这样算下来,一个CBC latch除了操作多个链表以外,还要保护数目更多的BH.因此,当CBC Latch出现竞争时,可能是如下两种
--情况:
1.多个进程频繁地以不兼容的模式申请获得某一CBC LATCH,访问此CBC latch保护的不同链表和不同BH.
2.多个进程频繁地以不兼容的模式申请获得莫伊CBC LATCH,访问此CBC Latch保护的同一链表的同一BH.
在这两种情况中,第一种情况被称为热链竞争,第二种情况被称为热块竞争. P62.
--自己重复测试,出现热链的情况:
1.建立测试环境:
SCOTT@test> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.3.0 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SCOTT@test> create table t as select rownum id,'test' data from dual connect by levelTable created.
SCOTT@test> select rowid,t.* from t where id=600;
ROWID ID DATA
------------------ ---------- ----
AABIyeAAEAAAAcMABL 600 test
SCOTT@test> @lookup_rowid AABIyeAAEAAAAcMABL
OBJECT FILE BLOCK ROW DBA TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
298142 4 1804 75 4,1804 alter system dump datafile 4 block 1804
;
2.查询对应的cbc latch地址:
SCOTT@test> select LRU_flag,hladdr from x$bh where dbarfil=4 and dbablk=1804 and OBJ=298142;
LRU_FLAG HLADDR
---------- ----------------
0 00000000BCAC7C58
SCOTT@test> select file#,dbablk,owner,object_id,data_object_id,object_name from x$bh a,dba_objects b where hladdr=hextoraw('00000000BCAC7C58') and a.obj=b.data_object_id;
FILE# DBABLK OWNER OBJECT_ID DATA_OBJECT_ID OBJECT_NAME
---------- ---------- ------ ---------- -------------- --------------------
1 70369 SYS 20 2 ICOL$
1 9171 SYS 20 2 ICOL$
1 70369 SYS 19 2 IND$
1 9171 SYS 19 2 IND$
1 70369 SYS 21 2 COL$
1 9171 SYS 21 2 COL$
1 70369 SYS 5 2 CLU$
1 9171 SYS 5 2 CLU$
1 48446 SYS 36 36 I_OBJ1
1 70369 SYS 2 2 C_OBJ#
1 9171 SYS 2 2 C_OBJ#
1 70369 SYS 4 2 TAB$
1 9171 SYS 4 2 TAB$
1 70369 SYS 80 2 LOB$
1 9171 SYS 80 2 LOB$
1 70369 SYS 83 2 COLTYPE$
1 9171 SYS 83 2 COLTYPE$
1 70369 SYS 86 2 SUBCOLTYPE$
1 9171 SYS 86 2 SUBCOLTYPE$
1 70369 SYS 88 2 NTAB$
1 9171 SYS 88 2 NTAB$
1 70369 SYS 92 2 REFCON$
1 9171 SYS 92 2 REFCON$
1 70369 SYS 95 2 OPQTYPE$
1 9171 SYS 95 2 OPQTYPE$
1 70369 SYS 114 2 ICOLDEP$
1 9171 SYS 114 2 ICOLDEP$
1 70369 SYS 173 2 VIEWTRCOL$
1 9171 SYS 173 2 VIEWTRCOL$
1 17847 SYS 232 232 I_ARGUMENT1
1 70369 SYS 251 2 LIBRARY$
1 9171 SYS 251 2 LIBRARY$
1 70369 SYS 252 2 ASSEMBLY$
1 9171 SYS 252 2 ASSEMBLY$
2 100036 SYS 267 267 SMON_SCN_TO_TIME_AUX
2 95465 SYS 267 267 SMON_SCN_TO_TIME_AUX
2 100036 SYS 269 267 SMON_SCN_TIME
2 95465 SYS 269 267 SMON_SCN_TIME
1 92292 SYS 420 420 C_OBJ#_INTCOL#
1 79045 SYS 420 420 C_OBJ#_INTCOL#
1 87721 SYS 420 420 C_OBJ#_INTCOL#
1 92292 SYS 422 420 HISTGRM$
1 79045 SYS 422 420 HISTGRM$
1 87721 SYS 422 420 HISTGRM$
1 70369 SYS 497 2 ATTRCOL$
1 9171 SYS 497 2 ATTRCOL$
1 70369 SYS 502 2 TYPE_MISC$
1 9171 SYS 502 2 TYPE_MISC$
2 91127 SYS 5870 5870 SCHEDULER$_EVENT_LOG
4 1804 SCOTT 298142 298142 T
50 rows selected.
--可以确定这些对象对应的块受到这个CBC latch的保护.
3.获得SYS.SCHEDULER$_EVENT_LOG第0行rowid.
SCOTT@test> select dbms_rowid.rowid_create(1,5870,2,91127,0) from dual ;
DBMS_ROWID.ROWID_C
------------------
AAABbuAACAAAWP3AAA
SCOTT@test> select LOG_DATE from sys.SCHEDULER$_EVENT_LOG where rowid='AAABbuAACAAAWP3AAA';
LOG_DATE
---------------------------------------------------------------------------
2012-05-12 22:09:39.833944
$ cat f1.sql
declare
m_id number;
m_data varchar2(200);
begin
for i in 1 .. 1e9 loop
select data into m_data from t where rowid='AABIyeAAEAAAAcMABL';
end loop;
end ;
/
$ cat g1.sql
declare
m_id number;
m_data varchar2(200);
begin
for i in 1 .. 1e9 loop
select to_char(LOG_DATE,'yyyymmdd') into m_data from sys.SCHEDULER$_EVENT_LOG where rowid='AAABbuAACAAAWP3AAA';
end loop;
end ;
/
00000000BCAC7C58
sqlplus scott/btbtms @f1.sql &
sqlplus scott/btbtms @g1.sql &
--也许我的机器太快了,2个会话根本看不到latch: cache buffers chains.
$ cat f.sh
#! /bin/bash
sqlplus -s scott/btbtms @ $1 &
sqlplus -s scott/btbtms @ $1 &
sqlplus -s scott/btbtms @ $1 &
sqlplus -s scott/btbtms @ $1 &
source f.sh f1.sql
source f.sh g1.sql
--启动4+4个会话,如果出现5个以上latch: cache buffers chains等待事件基本可以确定,P1RAW的信息都是00000000BCAC7C58.
SCOTT@test> select p1raw,p2raw,sid,serial#,seq#,event,state,wait_time_micro,seconds_in_wait from v$session where wait_class'Idle' order by event ;
P1RAW P2RAW SID SERIAL# SEQ# EVENT STATE WAIT_TIME_MICRO SECONDS_IN_WAIT
---------------- ---------------- ---------- ---------- ---------- ---------------------------------------- ------------------- --------------- ---------------
0000000062657100 0000000000000001 18 123 2449 SQL*Net message to client WAITED SHORT TIME 3 0
0000000080018467 0000000000000002 17 397 76 cursor: pin S WAITED KNOWN TIME 100077 0
00000000C12F4A4F 000000CF00000004 20 195 317 cursor: pin S WAITED KNOWN TIME 99767 0
00000000BCAC7C58 000000000000009B 207 407 331 latch: cache buffers chains WAITED KNOWN TIME 69568 0
00000000BCAC7C58 000000000000009B 400 43 293 latch: cache buffers chains WAITED SHORT TIME 785 0
00000000BCAC7C58 000000000000009B 204 341 74 latch: cache buffers chains WAITED KNOWN TIME 69055 0
00000000BCAC7C58 000000000000009B 596 23 344 latch: cache buffers chains WAITED SHORT TIME 4253 0
00000000BCAC7C58 000000000000009B 13 59 88 latch: cache buffers chains WAITED SHORT TIME 811 0
00000000BCAC7C58 000000000000009B 202 41 66 latch: cache buffers chains WAITED KNOWN TIME 69574 0
9 rows selected.
[20150123]热链竞争.txt相关推荐
- oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一
8.Oracle深度学习笔记--BUFFER CACHE深入一 最近项目一直和ORACLE死磕,感觉总是找不到出口,只能多看书少说话了. 先记录多少是多少吧! BUFFER CACHE在ORACLE的 ...
- 《Oracle内核技术解密》读书笔记(三)
目录 Buffer Cache 内部原理与I/O HASH链表 HASH链表与逻辑读 Cache buffers Chain Latch 与Buffer Pin锁 CBC Latch竞争 检查点队列链 ...
- 深度解读当前主流公链的竞争格局
对二线公链对比的报告,结合最新 Delphi 奶文,最近对新一轮的公链竞争有了新的思考.上次通过数据的对比总结(不含cosmos/dot)如下: 综合公链和生态来看:Sol > Avalanch ...
- 最全元宇宙概念分析!元宇宙为何发展于区块链?
元宇宙,Web3 时代最新热词,和 NFT.DAO 等新晋热门概念一起在 2021 年横空出世.这一概念最早诞生于 1992 年的科幻小说<雪崩>,小说中描绘了一个庞大的虚拟现实世界,人们 ...
- 专访超脑链团队:公链比联盟链更适合赋能传统企业
随着区块链技术的深化发展,越来越多公链扩容方案涌现出来.前段时间,链捕手(ID:iqklbs)曾相继介绍Coinflux与Monoxide的扩容方案,它们都在业界引起了较大关注. 近期,链捕手还关注到 ...
- 90%公链项目将死?那些号称超越以太坊的“颠覆者”咋样了?
公链最终的结局会如何?万向区块链董事长肖风表示,80%以上的公链会失败,这是一般的商业规律. 本文盘点了5个对标以太坊的公链项目--EOS.NEO.Cardano.AE.Tezos,从发展沿革.关键节 ...
- 解读Web3公链发展格局
公链是 Web3 领域最重要的基础设施,也是行业中竞争最激烈的赛道之一.如今公链竞争白热化,新公链还有机会吗? 以往论及公链的发展,我们总会谈论谁是真正的**"以太坊杀手"?谁将成 ...
- 区块链改革(链改)行动第二次联席会议在京召开
2018年9月5日 ,区块链改革(链改)行动第二次联席会议暨中国通信工业协会区块链专业委员会第一届第五次主任委员(扩大)会议在中国通信协会区块链专业委员会驻地顺利召开. 现场集区块链企业.专家.学者. ...
- 中秋佳节,有情怀的区块链开发者都怎么过?
价值回归,技术先行,随着「区块链泡沫」一词近期被推上了风口浪尖,越来越多的投资者.爱好者开始将视线转移至区块链技术本身,区块链也逐渐回归理性和技术本质,这也同时给大肆炒作区块链的机构来了一剂镇定剂,让 ...
最新文章
- 遮罩,在指定元素上进行遮罩
- Ubuntu14.04 LTS中安装Ruby 2.4源码操作步骤
- 100题_10 在排序数组中查找和为给定值的两个数字
- 基于 ASK + EB 构建容器事件驱动服务
- 前端学习(1977)vue之电商管理系统电商系统之按钮与文本框的切换
- Spotlights
- 邮件怎发送HTML,请问怎么发送HTML电子邮件
- Huffman编码原理详解
- 拓端tecdat|【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
- 一个能拖动,能调整大小,能更新bind值的vue指令-vuedragx
- 色彩管理实验 matlab,对色彩管理的一些认识和运用
- PyQt5初学试验记录(三):Pyinstaller打包小结
- 【JAVA】(vip)蓝桥杯试题 基础练习 阶乘计算 BASIC-30 JAVA
- 如何过滤出已知当前目录下/llj中的所有一级目录?
- WDK李宏毅学习笔记第三周02_高斯分布与逻辑回归编程实践
- 【知识建设】信息熵、条件熵、互信息、交叉熵及相对熵(KL散度)
- 【基础】python-docx包之----设置段落样式(缩进/对齐/间距)
- 陀螺仪加速度计MPU6050程序与校准方法
- iphone - - 怎么导出ipa文件
- 文件默认保存位置无法使用 将不能正常使用微信,如何解决?
热门文章
- 删除表数据有两种方法及区别
- Mobx入门之四:自定义reactions,when, autorun
- Android开发面试经——2.常见Android基础笔试题
- 阿里云,CentOS下yum安装mysql,jdk,tomcat
- 【转】Android 驱动开发系列四
- “越南QQ”——Zing Chat试玩
- 更开放的分布式事务 | 蚂蚁金服共建 Seata 社区
- [error] eclipse编写spring等xml配置文件时只有部分提示,tx无提示
- maven仓库没有fastdfs_client.jar的解决方案
- GUAVA常用方法总结整理 String list map转换