Oracle性能优化02 - LOCK

adt126

贡献于2014-01-21

字数:0 关键词: Oracle 数据库服务器

DATAGURU专业数据分析网站 2012.11.15 性能优化 第二课--LOCK 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 从一个最简单的例子感受锁的存在 时间 操作 会话1 会话2 t1 create table t(id int primary key) t2 insert into t values(1); t3 insert into t values(1); 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 为什么会有锁 没有并发就没有锁! 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 Oracle中锁的分类 Enqueues---队列类型的锁,通常和业务相关的。 Latches ---系统资源方面的锁,比如内存结构,SQL解 析...... 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 锁的原则 � 只有被修改时,行才会被锁定。 � 当一条语句修改了一条记录,只有这条记录上被锁定,在Oracle数据库中不存在锁升 级。 � 当某行被修改时,它将阻塞别人对它的修改。 � 当一个事务修改一行时,将在这个行上加上行锁(TX),用于阻止其它事务对相同行 的修改。 � 读永远不会阻止写。 � 读不会阻塞写,但有唯一的一个例外,就是select ...for update。 � 写永远不会阻塞读。 � 当一行被修改后,Oracle通过回滚段提供给数据的一致性读。 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 Oracle锁的类型 SQL> select type,name from V$lock_type; TYPE NAME ---------- ---------------------------------------- WM WLM Plan Operations CI Cross-Instance Call Invocation PR Process Startup AK GES Deadlock Test DI GES Internal RM GES Resource Remastering PE Parameter PG Global Parameter FP File Object RE Block Repair/Resilvering KD Scheduler Master DBRM KM Scheduler ...... 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 TM锁和TX锁 � TM 表锁,发生在insert,update,delete以及select for update操作时,目的是保证操 作能够正常进行,并且阻止其它人对表执行DDL操作。 � TX锁 事务锁(行锁)对于正在修改的数据,阻止其它会话进行修改。 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 修改和TM,TX锁定 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 继续演示几种锁定 � update � delete � select update 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 update的阻塞 会话1 会话2 会话3 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 delete操作的锁定 会话1 会话2 会话3 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 insert的阻塞 会话1 会话2 会话3 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 select ... for update 的阻塞 会话3 会话2 会话1 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 TM锁的几种模式----lock mode � Row Share (RS) --2 This lock, also 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)---3 This 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 multiple 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 table 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) ---5 This lock, also called a share-subexclusive table lock (SSX), is more restrictive than a share table lock. 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) ---6 This lock is the most restrictive, prohibiting other transactions from performing any type of DML statement or placing any type of lock on the table. 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 TM锁几种模式的互斥关系 模式 锁定的SQL 排斥的模式 允许的DML 2 lock table t in row share mode; 6 select,insert,update,delete,for update 3 lock table t in row exclusive mode; 4,5,6 select,insert,update,delete,for update 4 lock table t in share mode; 3,5,6 select 5 lock table t in share row exclusive mode; 3,4,5,6 select 6 lock table t in exclusive mode; 2,3,4,5,6 select 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 手工锁定的一个应用 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 RI锁---基于引用关系的锁定 � 当对具有主外键关系的表做DML操作时,锁定不单单发生在操作表上,相应的引用表 上也可能加上相应的锁定。 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 RI锁定--主表的insert 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 RI锁定--主表的delete(update) 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 RI锁定--从表的insert 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 RI锁定--从表的delete(update) 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 RI锁定--主从表的关联操作 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 不同版本数据库锁的差异 11g 9i,10g 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 BI锁和外键索引---没有索引的外键 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 BI锁和外键索引---有索引的外键 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 死锁 � 两个会话互相持有对方资源导致死锁。 2012- 11-23 DATAGURU专业数据分析网站 2012.11.15 结论--锁定是一个开发的范畴 � 通过锁定,可以达到预期的业务需求。 � 通过对业务深入的分析,可以最大程度的避免不必要锁定的发生。 DATAGURU专业数据分析网站 Thanks FAQ时间

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档

相关文档