逻辑读时的cbc latch(三)
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,继续验证使用索引时,cbc latch相关情况,使用solaris中的dtrace编写dtrace脚本more cbc.d#!/usr/sbin/dtrace -s -n char *memnr;in
千家信息网最后更新 2025年01月22日逻辑读时的cbc latch(三)
继续验证使用索引时,cbc latch相关情况,使用solaris中的dtrace
编写dtrace脚本
more cbc.d#!/usr/sbin/dtrace -s -n char *memnr;int latchaddr;dtrace:::BEGIN{ i=1; latchaddr=0;}pid$1::sskgslcas:entry{ memnr=copyin(arg0,12); latchaddr=arg0; printf("[%2x%2x%2x%2x|%2x%2x%2x%2x|%2x%2x%2x%2x]",memnr[3],memnr[2],memnr[1],memnr[0],memnr[7],memnr[6],memnr[5],memnr[4],memnr[11],memnr[10],memnr[9],memnr[8]); printf("i=%d PID::entry:==%s:%s:%s:%s %x %x %x %x %x %x",i, probeprov, probemod, probefunc, probename,arg0,arg1,arg2,arg3,arg4,arg5); i=i+1;}pid$1::sskgslcas:return{ memnr=copyin(latchaddr,12); printf("[%2x%2x%2x%2x|%2x%2x%2x%2x|%2x%2x%2x%2x]",memnr[3],memnr[2],memnr[1],memnr[0],memnr[7],memnr[6],memnr[5],memnr[4],memnr[11],memnr[10],memnr[9],memnr[8]); printf("i=%d PID::entry:==%s:%s:%s:%s %x %x %x",i, probeprov, probemod, probefunc, probename,latchaddr,arg0,arg1); i=i+1;}
先测试非唯一索引:
session1:创建相应对象,并多次执行查询语句
create table a as select * from dba_objects;create index idx_a on a(object_id);select owner from a where object_id='30000';SQL> select c.sid,spid,pid,a.SERIAL# from (select sid from v$mystat where rownum<=1) c,v$session a,v$process b where c.sid=a.sid and a.paddr=b.addr; SID SPID PID SERIAL#---------- ------------ ---------- ---------- 159 1355 15 9
session2:查询出block
set pagesize 50000set linesize 10000select file#,dbablk,tch,ba,HLADDR from x$bh a,dba_objects b where a.obj=b.data_object_id and object_name='IDX_A' order by FILE#,DBABLK; FILE# DBABLK TCH BA HLADDR---------- ---------- ---------- -------- -------- 1 60641 0 5A4A8000 5F13949C 1 60642 0 5A350000 5F0FC938 1 60642 4 595EA000 5F0FC938 1 62091 0 58116000 5F14F564 1 62091 4 58468000 5F14F564SQL> select segment_name,header_file,header_block from dba_segments where segment_name=upper('IDX_A');SEGMENT_NAME HEADER_FILE HEADER_BLOCK--------------------------------------------------------------------------------- ----------- ------------IDX_A 1 60641
60641对段头块,60642为索引的root块,62091为leaf块
执行dtrace脚本,做跟踪,然后回到session1中再次执行查询语句
./cbc.d 1355 > logic_read.log
bash-3.2# cat logic_read.log|wc -l
25
session1:60642对应5F0FC938,在索引扫描时,对root块是共享cbc latch
SQL> oradebug call sskgslcas 0x5f0fc938 0 1Function returned 1SQL> select owner from a where object_id='30000';OWNER------------------------------PUBLICPUBLICSQL> oradebug call sskgsldecr 0x5f0fc938 1Function returned 1
62091为leaf块,在索引扫描时,对leaf块是一次共享cbc latch,三次独占cbc latch
bash-3.2# cat logic_read.log|grep -i 5F14F564 1 53243 sskgslcas:entry [ 0 0 0 0| 0 0 6 8| 0 0 07a]i=5 PID::entry:==pid1355:oracle:sskgslcas:entry 5f14f564 0 1 fdc4d278 fdc4d270 fdc4d134 1 53244 sskgslcas:return [ 0 0 0 1| 0 0 6 8| 0 0 07a]i=6 PID::entry:==pid1355:oracle:sskgslcas:return 5f14f564 16 1 1 53243 sskgslcas:entry [ 0 0 0 0| 0 0 6 9| 0 0 07a]i=11 PID::entry:==pid1355:oracle:sskgslcas:entry 5f14f564 0 2000000f ffffffff fdc4d278 fdc4d130 1 53244 sskgslcas:return [20 0 0 f| 0 0 6 9| 0 0 07a]i=12 PID::entry:==pid1355:oracle:sskgslcas:return 5f14f564 16 1 1 53243 sskgslcas:entry [ 0 0 0 0| 0 0 6 a| 0 0 07a]i=13 PID::entry:==pid1355:oracle:sskgslcas:entry 5f14f564 0 2000000f c4a89cc fdc4d134 fdc4d270 1 53244 sskgslcas:return [20 0 0 f| 0 0 6 a| 0 0 07a]i=14 PID::entry:==pid1355:oracle:sskgslcas:return 5f14f564 16 1 1 53243 sskgslcas:entry [ 0 0 0 0| 0 0 6 b| 0 0 07a]i=15 PID::entry:==pid1355:oracle:sskgslcas:entry 5f14f564 0 2000000f 0 fdc4d278 fdc4d26c 1 53244 sskgslcas:return [20 0 0 f| 0 0 6 b| 0 0 07a]i=16 PID::entry:==pid1355:oracle:sskgslcas:return 5f14f564 16 1
上面是索引为非唯一索引时,cbc latch相关情况下面过程为测试
再测试唯一索引:
create table a as select * from dba_objects;create unique index idx_a on a(object_id);SQL> select c.sid,spid,pid,a.SERIAL# from (select sid from v$mystat where rownum<=1) c,v$session a,v$process b where c.sid=a.sid and a.paddr=b.addr; SID SPID PID SERIAL#---------- ------------ ---------- ---------- 147 1374 16 12select owner from a where object_id='30000';SQL> select file#,dbablk,tch,ba,HLADDR from x$bh a,dba_objects b where a.obj=b.data_object_id and object_name='IDX_A' order by FILE#,DBABLK; FILE# DBABLK TCH BA HLADDR---------- ---------- ---------- -------- -------- 1 60641 1 595EA000 5F13949C 1 60642 4 5A752000 5F0FC938 1 61343 3 584A0000 5F122270SQL> / FILE# DBABLK TCH BA HLADDR---------- ---------- ---------- -------- -------- 1 60641 1 595EA000 5F13949C 1 60642 6 5A752000 5F0FC938 1 61343 5 584A0000 5F122270SQL> select segment_name,header_file,header_block from dba_segments where segment_name=upper('IDX_A');SEGMENT_NAME--------------------------------------------------------------------------------HEADER_FILE HEADER_BLOCK----------- ------------IDX_A 1 6064160642为root块,61343为leaf块bash-3.2# cat logic_read1.logCPU ID FUNCTION:NAME 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 074| 0 0 0 0]i=1 PID::entry:==pid1374:oracle:sskgslcas:entry 5ceb6fe8 0 930001 5d76abac 5ceb6fe8 5f8c4c6c 0 53244 sskgslcas:return [ 093 0 1| 0 0 074| 0 0 0 0]i=2 PID::entry:==pid1374:oracle:sskgslcas:return 5ceb6fe8 16 1 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 5db| 0 0 07a]i=3 PID::entry:==pid1374:oracle:sskgslcas:entry 5f0fc938 0 1 804510c 8045104 fdc18bf8 0 53244 sskgslcas:return [ 0 0 0 1| 0 0 5db| 0 0 07a]i=4 PID::entry:==pid1374:oracle:sskgslcas:return 5f0fc938 16 1 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 5 2| 0 0 07a]i=5 PID::entry:==pid1374:oracle:sskgslcas:entry 5f122270 0 1 804510c 8045104 fdc18bf8 0 53244 sskgslcas:return [ 0 0 0 1| 0 0 5 2| 0 0 07a]i=6 PID::entry:==pid1374:oracle:sskgslcas:return 5f122270 16 1 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 698| 0 0 07a]i=7 PID::entry:==pid1374:oracle:sskgslcas:entry 5f106340 0 1 fdc18f60 fdc18f58 fdc18f00 0 53244 sskgslcas:return [ 0 0 0 1| 0 0 698| 0 0 07a]i=8 PID::entry:==pid1374:oracle:sskgslcas:return 5f106340 16 1 0 53243 sskgslcas:entry [ 0 0 0 1| 0 0 075| 0 0 0 0]i=9 PID::entry:==pid1374:oracle:sskgslcas:entry 5ceb6fe8 1 930000 c4a88d0 5ceb6fe8 5f8c4c6c 0 53244 sskgslcas:return [ 093 0 0| 0 0 075| 0 0 0 0]i=10 PID::entry:==pid1374:oracle:sskgslcas:return 5ceb6fe8 16 1bash-3.2# cat logic_read1.log|grep -i 5F0FC938 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 5db| 0 0 07a]i=3 PID::entry:==pid1374:oracle:sskgslcas:entry 5f0fc938 0 1 804510c 8045104 fdc18bf8 0 53244 sskgslcas:return [ 0 0 0 1| 0 0 5db| 0 0 07a]i=4 PID::entry:==pid1374:oracle:sskgslcas:return 5f0fc938 16 1bash-3.2# cat logic_read1.log|grep -i 5F122270 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 5 2| 0 0 07a]i=5 PID::entry:==pid1374:oracle:sskgslcas:entry 5f122270 0 1 804510c 8045104 fdc18bf8 0 53244 sskgslcas:return [ 0 0 0 1| 0 0 5 2| 0 0 07a]i=6 PID::entry:==pid1374:oracle:sskgslcas:return 5f122270 16 1bash-3.2# cat logic_read1.log|grep -i 5F106340 0 53243 sskgslcas:entry [ 0 0 0 0| 0 0 698| 0 0 07a]i=7 PID::entry:==pid1374:oracle:sskgslcas:entry 5f106340 0 1 fdc18f60 fdc18f58 fdc18f00 0 53244 sskgslcas:return [ 0 0 0 1| 0 0 698| 0 0 07a]i=8 PID::entry:==pid1374:oracle:sskgslcas:return 5f106340 16 1唯一索引扫描时,对root块与leaf块都是一次共享cbc latch,对表块也是一次共享cbc latch
逻辑读时的cbc latch(一):http://qhd2004.blog.51cto.com/629417/1576554
逻辑读时的cbc latch(二):http://qhd2004.blog.51cto.com/629417/1576579
参考:http://blog.itpub.net/321157/viewspace-730936/
索引
查询
测试
逻辑
情况
脚本
语句
非唯
再次
对象
过程
参考
跟踪
验证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
晋京互联网科技有限公司
p2p软件开发需求
北京思飞扬网络技术服务中心
长宁区现代化软件开发注意事项
华为网络安全试题
中国网络安全培训认证
玉米群体表型数据库
数据库技术带头人
山东检测实验室管理软件开发
2019年网络安全威胁
茌平软件开发项目管理在线咨询
玉溪服务器
怎么优化数据库性能
计算机网络安全梁亚声pdf
西安软件开发平均工资多少钱
上海abb软件开发薪资
监控中央管理服务器
模具公司erp软件开发
临时限速服务器
科蓝软件开发有限公司
58同城里服务器异常怎样处理
服务器340是信号差吗
内蒙古新一代软件开发应用
wind万德数据库
人工智能使用的数据库
参内祺云网络技术
河北盘古网络技术
文件服务器文件夹权限详解
数据库文件的后缀
三强树牢群众网络安全意识