[20190419]shared latch spin count 2.txt --//上午测试shared latch XX模式的情况,链接:http://blog.itpub.net/267265/viewspace-2641902/ --//继续测试其它情况. --//链接:http://andreynikolaev.wordpress.com/2011/01/14/spin-tales-part-2-shared-latches-in-oracle-9-2-11g/ S mode get X mode get Held in S mode Compatible 2*_spin_count Held in X mode 0 2*_spin_count Blocking mode 0 2*_spin_count 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SYS@book> @ hide spin_count NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ----------------- ---------------------------------- ------------- ------------- ------------ _mutex_spin_count Mutex spin count TRUE 255 255 _spin_count Amount to spin waiting for a latch TRUE 2000 2000 $ cat shared_latch.txt /* 参数如下: @ latch.txt latch_name willing why where mode sleep_num */ --//connect / as sysdba col laddr new_value laddr col vmode new_value vmode select decode(lower('&&5'),'s',8,'x',16,'8',8,'16',16) vmode from dual ; SELECT addr laddr FROM v$latch_parent WHERE NAME='&&1'; oradebug setmypid oradebug call kslgetsl_w 0x&laddr &&2 &&3 &&4 &vmode host sleep &&6 oradebug call kslfre 0x&laddr --//exit --//注:我前几天的测试脚本有connect / as sysdba,exit这两行,我为了调式方便,先注解这2行,避免反复退出进入会话. 2.测试1: --//选择一个shared latch测试,我选择"test shared non-parent l0" latch测试: SYS@book> select * from shared_latches where name='test shared non-parent l0'; VERSION LATCH# NAME S ---------- ------ ------------------------- - 11.2.0.4.0 6 test shared non-parent l0 Y 2.测试一些细节不再列出,参考链接:http://blog.itpub.net/267265/viewspace-2641902/ --//测试XS模式的情况: --//session 1: SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 1 2 x 100000 --//session 2: SYS@book> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- ------ ------- ---------- -------------------------------------------------- 1 11 31454 DEDICATED 31455 24 5 alter system kill session '1,11' immediate; --//记下spid=31455. SYS@book> @shared_latch.txt "test shared non-parent l0" 1 3 4 s 1 --//注意session 申请S mode. --//window 3:执行: $ rlwrap gdb -p 31455 -x spin_s.gdb Breakpoint 1 at 0x93f97a8 Breakpoint 2 at 0x93f9b74 Breakpoint 3 at 0x9808932 Breakpoint 4 at 0x9809840 Breakpoint 5 at 0x37990d6400 Breakpoint 6 at 0x93f9ddc Breakpoint 7 at 0x93faa36 Breakpoint 8 at 0xa865ca Breakpoint 9 at 0xa874fa Breakpoint 10 at 0xa875be (gdb) c Continuing. ... kslgetl 6010d860, 1, 2126093176, 3991 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:96, mode:16 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:95, mode:8 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:96, mode:16 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:95, mode:8 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:96, mode:16 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:95, mode:8 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:96, mode:16 ksl_get_shared_latch laddr:60009a18, willing:1, where:3, why:4, mode:8 kslgess 60009a18, 8, 0, 3 kslskgs 60009a18, 0, 1129096976, 1129097520 kslskgs 60009a18, 0, 1129096976, 1129097520 ---Type <return> to continue, or q <return> to quit--- skgpwwait 1129096760, 202182304, -2044672536, 0 sskgpwwait 1129096760, 202182304, -2044672536, 0 semop 315588608, 1129096560, 1, -1 --//按ctrl+c出现如下: kslskgs 60009a18, 0, 1129096976, 1129097520 --//可以看出X模式的情况,申请S mode,第2进程直接调用semop.根本不做spin操作. 3.测试2: --//测试SX模式的情况: --//session 1: SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 1 2 s 100000 --//session 持有S mode. --//session 2: SYS@book> @shared_latch.txt "test shared non-parent l0" 1 3 4 x 1 --//注意session 申请x mode. --//window 3:执行: $ rlwrap gdb -p 31455 -x spin_s.gdb .. ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:95, mode:8 ksl_get_shared_latch laddr:85f7f4c8, willing:1, where:-2043602896, why:96, mode:16 ksl_get_shared_latch laddr:60009a18, willing:1, where:3, why:4, mode:16 kslgess 60009a18, 16, 0, 3 kslskgs 60009a18, 0, 1129096976, 1129097520 spin count loop: 2000 a875be spin count loop: 1999 a875be spin count loop: 1998 a875be spin count loop: 1997 a875be ... spin count loop: 3 a875be spin count loop: 2 a875be spin count loop: 1 a875be kslskgs 60009a18, 0, 1129096976, 1129097520 spin count loop: 1 a875be skgpwwait 1129096760, 202182304, -2044672536, 0 sskgpwwait 1129096760, 202182304, -2044672536, 0 semop 315588608, 1129096560, 1, -1 --//按ctrl+c后. kslskgs 60009a18, 0, 1129096976, 1129097520 spin count loop: 2000 a875be --//可以S模式的情况,申请X mode,第2进程spin_count=2000. 4.测试3: --//Blocking mode,首先我对这个模式的理解不是非常清晰. --//我的理解 A.当前X mode持有,不管S,X模式申请都会阻塞,再有进程申请的情况. B.当前S mode持有,X模式申请,后续再有进程申请的情况. --//也就是这个情况至少3个会话,我分别测试看看 --//session 1: SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 1 2 s 100000 --//session 2: SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 3 4 x 1 --//session 3: --//spid=31572 SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 5 6 s 1 --//gdb监测session 3进程: $ rlwrap gdb -p 31572 -x spin_s.gdb ... ksl_get_shared_latch laddr:85f7fa68, willing:1, where:-2042914736, why:95, mode:8 ksl_get_shared_latch laddr:85f7fa68, willing:1, where:-2042914736, why:96, mode:16 ksl_get_shared_latch laddr:60009a18, willing:1, where:5, why:6, mode:8 kslgess 60009a18, 8, 0, 5 kslskgs 60009a18, 0, -1923148048, -1923147504 kslskgs 60009a18, 0, -1923148048, -1923147504 skgpwwait -1923148264, 202182304, -2044655416, 0 sskgpwwait -1923148264, 202182304, -2044655416, 0 semop 315588608, -1923148464, 1, -1 kslskgs 60009a18, 0, -1923148048, -1923147504 --//申请S mode,没有spin. --//session 1: SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 1 2 s 100000 --//session 2: SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 3 4 x 1 --//session 3: --//spid=31572 SYS@book> @ shared_latch.txt "test shared non-parent l0" 1 5 6 x 1 --//gdb监测session 3进程: $ rlwrap gdb -p 31572 -x spin_s.gdb ... ksl_get_shared_latch laddr:85f7fa68, willing:1, where:-2042914736, why:96, mode:16 ksl_get_shared_latch laddr:60009a18, willing:1, where:5, why:6, mode:16 kslgess 60009a18, 16, 0, 5 kslskgs 60009a18, 0, -1923148048, -1923147504 spin count loop: 2000 a875be spin count loop: 1999 a875be spin count loop: 1998 a875be spin count loop: 1997 a875be ... spin count loop: 1 a875be kslskgs 60009a18, 0, -1923148048, -1923147504 spin count loop: 1 a875be skgpwwait -1923148264, 202182304, -2044655416, 0 sskgpwwait -1923148264, 202182304, -2044655416, 0 semop 315588608, -1923148464, 1, -1 kslskgs 60009a18, 0, -1923148048, -1923147504 spin count loop: 2000 a875be --//申请X mode,spin_count=2000. --//XSS的情况: ksl_get_shared_latch laddr:85f7fa68, willing:1, where:-2042914736, why:96, mode:16 ksl_get_shared_latch laddr:60009a18, willing:1, where:5, why:6, mode:8 kslgess 60009a18, 8, 0, 5 kslskgs 60009a18, 0, -1923148048, -1923147504 kslskgs 60009a18, 0, -1923148048, -1923147504 skgpwwait -1923148264, 202182304, -2044655416, 0 sskgpwwait -1923148264, 202182304, -2044655416, 0 semop 315588608, -1923148464, 1, -1 kslskgs 60009a18, 0, -1923148048, -1923147504 --//XSX的情况: ksl_get_shared_latch laddr:85f7fa68, willing:1, where:-2042914736, why:96, mode:16 ksl_get_shared_latch laddr:60009a18, willing:1, where:5, why:6, mode:16 kslgess 60009a18, 16, 0, 5 kslskgs 60009a18, 0, -1923148048, -1923147504 spin count loop: 2000 a875be spin count loop: 1999 a875be spin count loop: 1998 a875be spin count loop: 1997 a875be spin count loop: 1996 a875be spin count loop: 1995 a875be ... sskgpwwait -1923148264, 202182304, -2044655416, 0 semop 315588608, -1923148464, 1, -1 kslskgs 60009a18, 0, -1923148048, -1923147504 spin count loop: 2000 a875be --//总之:阻塞申请X mode,spin_count=2000.S mode 直接调用semop休眠. 5.总结 --//画一个表格: S mode get X mode get Held in S mode Compatible _spin_count Held in X mode 0 _spin_count Blocking mode 0 _spin_count
[20190419]shared latch spin count 2.txt
来源:这里教程网
时间:2026-03-03 13:27:06
作者:
编辑推荐:
- [20190419]shared latch spin count.txt03-03
- [20190419]shared latch spin count 2.txt03-03
- 安装PSU后一定要运行catbundle.sql psu apply脚本吗03-03
- oracle数据库exp03-03
- Debian Partclone 教程(手把手教你使用 Partclone 在 Debian 系统中进行分区克隆与备份)03-03
- Oracle数据库常用十一大操作指令03-03
- oracle丢失的是所有的redo日志组03-03
- Debian OpenStack命令行操作(新手入门指南:从安装到基础管理)03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- oracle数据库exp
oracle数据库exp
26-03-03 - Debian Partclone 教程(手把手教你使用 Partclone 在 Debian 系统中进行分区克隆与备份)
- Oracle数据库常用十一大操作指令
Oracle数据库常用十一大操作指令
26-03-03 - Debian OpenStack命令行操作(新手入门指南:从安装到基础管理)
- 数据安全不再是可选项
数据安全不再是可选项
26-03-03 - 数据库基础原理1:Oracle数据库体系结构
数据库基础原理1:Oracle数据库体系结构
26-03-03 - 10-oracle_表达式
10-oracle_表达式
26-03-03 - 数据架构选型必读:4月数据库产品技术解析
数据架构选型必读:4月数据库产品技术解析
26-03-03 - 11-oracle_索引
11-oracle_索引
26-03-03 - Oracle 基础实践2-1:网络配置-单实例网络环境配置
Oracle 基础实践2-1:网络配置-单实例网络环境配置
26-03-03
