rebuildindexonline的锁机制浅析

rebuildindexonline的锁机制浅析

ID:19315535

大小:52.00 KB

页数:6页

时间:2018-10-01

rebuildindexonline的锁机制浅析_第1页
rebuildindexonline的锁机制浅析_第2页
rebuildindexonline的锁机制浅析_第3页
rebuildindexonline的锁机制浅析_第4页
rebuildindexonline的锁机制浅析_第5页
资源描述:

《rebuildindexonline的锁机制浅析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一般都说,rebuildindexonline不阻塞DML操作,这是相对于rebuildindex来说的,加上了online,只是在rebuild的期间不阻塞DML,但是在开始和结束阶段还是可能阻塞其他进程的DML的,要弄清楚到底是阻塞还是不阻塞,何处阻塞,为什么阻塞,还是要从锁的角度来分析。本文实验环境为Oracle10.2.0.4。Oracle中的锁,一共有6两种模式:0:none1:null空2:Row-S行共享(RS):共享表锁,subshare3:Row-X行独占(RX):用于行的修改,sube

2、xclusive4:Share共享锁(S):阻止其他DML操作,share5:S/Row-X共享行独占(SRX):阻止其他事务操作,share/subexclusive6:exclusive独占(X):独立访问使用,exclusive我们知道,DML操作一般要加两个锁,一个是对表加模式为3的TM锁,一个是对数据行的模式为6的TX锁。只要操作的不是同一行数据,是互不阻塞的。但是rebuildindexonline在开始和结束的时候是需要对表加一个模式为4的TM锁的,这个可以很容易通过实验观察到,实验中的测试

3、表t是通过createtabletasselect*fromall_objects生成,并且多次执行insertintotselect*fromt产生较多的数据,以便延迟rebuild的时间来观察系统中锁的情况:session1:SQL>deletefromtwhereobject_id=28;1rowdeleted.session2:SQL>alterindexix_trebuildonline;Session2被阻塞,会话挂起,这时查询v$lock,可以得到如下结果:SQL>selectsid,typ

4、e,id1,id2,lmode,requestfromv$lockwheretypein('DL','TM','TX');SIDTYID1ID2LMODEREQUEST----------------------------------------------------1643DL105990301643DL105990301622TM105990301643TM105990241643TM106070401622TX655398136160从上面的结果可以知道,1622是session1,1643是s

5、ession2,session2一共出现了4个锁,两个DL锁,一个针对表t的TM锁,一个是onlinerebuildindex时需要的一个中间表的TM锁,中间表用于记录rebuild期间的增量数据,原理类似于物化视图日志,其object_id为10607,这是一个索引组织表(IOT),从这里我们也可以发现IOT的优点和适合的场合,这张中间表只有插入,不会有删除和修改操作,而且只有主键条件查询,正是IOT最合适的场景:SQL>selectobject_name,object_typefromall_obje

6、ctswhereobject_id=10607;OBJECT_NAMEOBJECT_TYPE-------------------------------------------------SYS_JOURNAL_10602TABLESQL>selecttable_name,iot_typefromall_tableswheretable_name='SYS_JOURNAL_10602';TABLE_NAMEIOT_TYPE-----------------------------------------

7、-SYS_JOURNAL_10602IOTSession2在请求一个模式为4的TM锁,模式4会阻塞这个表上的所有DML操作,所以这是再往这个表上执行DML也会挂起session3:SQL>deletefromtwhereobject_id=46;SQL>selectsid,type,id1,id2,lmode,requestfromv$lockwheretypein('DL','TM','TX');SIDTYID1ID2LMODEREQUEST-------------------------------

8、---------------------1643DL105990301643DL105990301622TM105990301643TM105990241643TM106070401627TM105990031622TX6553981361601627就是session3,请求模式为3的TM锁无法获得,会话被阻塞。这是因为锁请求是需要排队的,即使session3和session1是可以并发的,但由于session2先请求锁并

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

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

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