晶晶实验四 讨论闩篇

晶晶实验四 讨论闩篇

ID:6043859

大小:29.00 KB

页数:6页

时间:2018-01-01

晶晶实验四 讨论闩篇_第1页
晶晶实验四 讨论闩篇_第2页
晶晶实验四 讨论闩篇_第3页
晶晶实验四 讨论闩篇_第4页
晶晶实验四 讨论闩篇_第5页
资源描述:

《晶晶实验四 讨论闩篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、晶晶实验四_讨论闩篇上一篇/下一篇2008-02-1719:41:12/个人分类:晶晶oracle实验系列查看(1811)/评论(19)因为闩的种类过多,以后分别在各自领域详细介绍.今天先总的介绍闩的概念.闩不象锁,锁的结构非常复杂,在晶晶实验五中,我们就要讨论锁的结构.闩的实现相对与锁来说就非常简单了,大多数闩没有等待者,持有者等等这些队列,且大部分闩没有共享,独占等模式.(当然有部分闩例外).闩是内存中的一些位,使用CPU的硬指令(testandset或swap)将其值设置为0或非0,表示是否被持有,他的实现代码极其简单,因此,闩的获取和释放都是非常快的.闩的持有过程也应该非常

2、短暂.比如:有些闩是保护lock和pin的释放获取过程,当lock和pin获取完毕,闩就可以释放了,真正的操作在lock和pin的保护下完成.闩不会伴随整个操作.闩分三种1,长闩;2,短闩;3,共享闩长闩:当请求闩而没有立即获得.请求闩的进程会被放进一个等待者队列.当闩的持有者释放时,会通知队列中第一个等待者.短闩:当请求闩而没有立即获得,多CPU下会先自旋,如果自旋仍然得不到闩会进入睡眠状态,N厘秒后醒来再次自旋,如果得不到,再次睡眠...依次循环直到获得闩.睡眠的时间是1,4,4,8,8,16,16(单位厘秒)...每两次倍增.每睡眠一次都对应一次latchfree等待事件.自

3、旋的伪码大概如下:定义全局变量latch=0读取(资源ID){intbz=1:while(bz==1){Swap(latch,bz);}访问资源;latch=0;}在X86系统中,Swap函数就是XCHG指令.他是一条CPU的硬指令,他的执行不会被打断.因为自旋的过程是一个忙测试循环,在此期间进程会一直占有CPU的时间片,通常还会使用指令禁止进程切换,单CPU下在自旋期间,持有闩的进程不可能得到执行,也不可能释放他所持有的闩,所以在单CPU下自旋是没有意义的.共享闩:具文档中介绍,共享闩只有一个,就是CacheBufferChain闩(简称CBC闩)。编写了个小脚本,反复读取某个表

4、的同一个块.看此共享闩是否有争用:createorreplaceproceduremy_cursoriscursoraaisselectidfromjj_2whererowid='AAAMvgAAHAAAAGwAAA';xnumber(5);beginforiin1..300000loopopenaa;fetchaaintox;closeaa;endloop;end;/在执行前先观察CBC闩的情况:SQL>selectsid,event,time_waited,time_waited_micro,total_timeouts,total_waitsfromv$session_eve

5、ntwhere(sid=190orsid=203)andevent='latch:cachebufferschains';SIDEVENTTIME_WAITEDTIME_WAITED_MICROTOTAL_TIMEOUTSTOTAL_WAITS---------------------------------------------------------------------------------------------190latch:cachebufferschains03904203latch:cachebufferschains039109在一个会话中执行上面的脚本,

6、查看V$session_event视图,可以发现没有新的相关CBC闩的等待,分别在两个会话中执行上面的脚本,执行一次后,查看V$session_event中的等待事件:SIDEVENTTIME_WAITEDTIME_WAITED_MICROTOTAL_TIMEOUTSTOTAL_WAITS---------------------------------------------------------------------------------------------190latch:cachebufferschains03904203latch:cachebufferscha

7、ins0574013再试一次:SIDEVENTTIME_WAITEDTIME_WAITED_MICROTOTAL_TIMEOUTSTOTAL_WAITS---------------------------------------------------------------------------------------------190latch:cachebufferschains07505203latch:cachebufferschains0682017发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。