《Oracle 课程-性能优化第2课-性能优化之lock.pdf》由会员分享,可在线阅读,更多相关《Oracle 课程-性能优化第2课-性能优化之lock.pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、DATAGURU专业数据分析网站 2012.2012.1111.15 15 性能优化性能优化 第第二二课课-LOCK-LOCK2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515从一个最简单的例子感受锁的存在从一个最简单的例子感受锁的存在时间 操作 会话1 会话2t1 create table t(id int primary key)t2 insert into t values(1);t3 insert into t values(1);2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515为什么会有锁为什么会有锁没
2、有并发就没有锁!2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515OracleOracle中锁的分类中锁的分类Enqueues-队列类型的锁,通常和业务相关的。Latches -系统资源方面的锁,比如内存结构,SQL解析.2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515锁的原则锁的原则 只有被修改时,行才会被锁定。当一条语句修改了一条记录,只有这条记录上被锁定,在Oracle数据库中不存在锁升级。当某行被修改时,它将阻塞别人对它的修改。当一个事务修改一行时,将在这个行上加上行锁(TX),用于阻止其它事务对相同行的
3、修改。读永远不会阻止写。读不会阻塞写,但有唯一的一个例外,就是select.for update。写永远不会阻塞读。当一行被修改后,Oracle通过回滚段提供给数据的一致性读。2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515OracleOracle锁的类型锁的类型SQL select type,name from V$lock_type;TYPE NAME-WM WLM Plan OperationsCI Cross-Instance Call InvocationPR Process StartupAK GES Deadlock TestDI GES
4、 InternalRM GES Resource RemasteringPE ParameterPG Global ParameterFP File ObjectRE Block Repair/ResilveringKD Scheduler Master DBRMKM Scheduler.2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515TMTM锁和锁和TXTX锁锁 TM 表锁,发生在insert,update,delete以及select for update操作时,目的是保证操作能够正常进行,并且阻止其它人对表执行DDL操作。TX锁 事务锁(行锁)对
5、于正在修改的数据,阻止其它会话进行修改。2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515修改和修改和TMTM,TXTX锁定锁定2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515继续演示几种锁定继续演示几种锁定 update delete select update 2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515updateupdate的阻塞的阻塞会话1会话2会话32012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515deletedel
6、ete操作的锁定操作的锁定会话1会话2会话32012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515insertinsert的阻塞的阻塞会话1会话2会话32012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515select.for update select.for update 的阻塞的阻塞会话3会话2会话12012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515TMTM锁的几种模式锁的几种模式-lock mode-lock modeRow Share(RS)-2This lock,also
7、 called a subshare table lock(SS),indicates that the transaction holding the lock on the table has locked rows in the table and intends to update them.A row share lock is the least restrictive mode of table lock,offering the highest degree of concurrency for a table.Row Exclusive Table Lock(RX)-3Thi
8、s lock,also called a subexclusive table lock(SX),generally indicates that the transaction holding the lock has updated table rows or issued SELECT.FOR UPDATE.An SX lock allows other transactions to query,insert,update,delete,or lock rows concurrently in the same table.Therefore,SX locks allow multip
9、le transactions to obtain simultaneous SX and subshare table locks for the same table.Share Table Lock(S)-4 A share table lock held by a transaction allows other transactions to query the table(without using SELECT.FOR UPDATE),but updates are allowed only if a single transaction holds the share tabl
10、e lock.Because multiple transactions may hold a share table lock concurrently,holding this lock is not sufficient to ensure that a transaction can modify the table.Share Row Exclusive Table Lock(SRX)-5This lock,also called a share-subexclusive table lock(SSX),is more restrictive than a share table l
11、ock.Only one transaction at a time can acquire an SSX lock on a given table.An SSX lock held by a transaction allows other transactions to query the table(except for SELECT.FOR UPDATE)but not to update the table.Exclusive Table Lock(X)-6This lock is the most restrictive,prohibiting other transaction
12、s from performing any type of DML statement or placing any type of lock on the table.2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515TMTM锁几种模式的互斥关系锁几种模式的互斥关系模式锁定的SQL排斥的模式允许的DML2lock table t in row share mode;6select,insert,update,delete,for update3lock table t in row exclusive mode;4,5,6select,insert,u
13、pdate,delete,for update4lock table t in share mode;3,5,6select5lock table t in share row exclusive mode;3,4,5,6select6lock table t in exclusive mode;2,3,4,5,6select2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515手工锁定的一个应用手工锁定的一个应用2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515RIRI锁锁-基于引用关系的锁定基于引用关系的锁定 当对
14、具有主外键关系的表做DML操作时,锁定不单单发生在操作表上,相应的引用表上也可能加上相应的锁定。2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515RIRI锁定锁定-主表的主表的insertinsert2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515RIRI锁定锁定-主表的主表的delete(update)delete(update)2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515RIRI锁定锁定-从表的从表的insertinsert2012-11-23DATAGURU专业
15、数据分析网站2012.2012.1111.1515RIRI锁定锁定-从表的从表的delete(update)delete(update)2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515RIRI锁定锁定-主从表的关联操作主从表的关联操作2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515不同版本数据库锁的差异不同版本数据库锁的差异11g9i,10g2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515BIBI锁和外键索引锁和外键索引-没有索引的外键没有索引的外键2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515BIBI锁和外键索引锁和外键索引-有索引的外键有索引的外键2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515死锁死锁 两个会话互相持有对方资源导致死锁。2012-11-23DATAGURU专业数据分析网站2012.2012.1111.1515结论结论-锁定是一个开发的范畴锁定是一个开发的范畴 通过锁定,可以达到预期的业务需求。通过对业务深入的分析,可以最大程度的避免不必要锁定的发生。DATAGURU专业数据分析网站ThanksThanksFAQ时间
限制150内