逻辑读时的cbc latch(三)
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,继续验证使用索引时,cbc latch相关情况,使用solaris中的dtrace编写dtrace脚本more cbc.d#!/usr/sbin/dtrace -s -n char *memnr;in
千家信息网最后更新 2025年11月09日逻辑读时的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 6064160641对段头块,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安全错误
数据库的锁怎样保障安全
三级网络技术知识点总计
ccna网络安全工程师
会计信息系统服务器在境外
开展网络安全的目的和意义
工会网络安全制度
代理服务器ip地址和端口号国外
数据库更新操作
工业网络技术男女比例
怎么联系上软件开发商
公安网络安全自查工作情况
软件开发与人工智能有关么
数据库日期取月份
基于计算机网络技术的沟通
服务器启动提示无效的分区表
现在社会的网络技术那个好
维护国家网络安全的事例
服务器ts多大
北京智能巡检软件开发费用
控制网络技术实验总结
关于网络安全的调查问卷
浅谈网络技术的特点
数据库关系运算更名
公路网络安全测试报告
goahead服务器
关于网络安全叫长剑
手机网络安全问题及解决措施
UPS的管理服务器
美国打压互联网科技
互联网平安科技有限公司招聘
服务器文件安全管理