数据库锁机制

  数据并发会引起很多问题,数据库通过锁机制来解决并发访问的问题,虽然不同的数据库在实现细节上存在差别,但是原理都差不多,下面介绍一下数据库的锁机制

  按锁定的对象不同分为表锁定和行锁定,表锁定对整个表进行锁定,行锁定针对特定的行进行锁定,从并发事务锁定的关系上看,可以分为共享锁定和独占锁定,共享锁定会防止独占锁定,允许其他的共享锁定,而独占锁定既防止其他的独占锁定,也防止其他的共享锁定。下面介绍一下oracle的五种锁定:

  1 行共享锁定:一般通过select for update 语句隐式获得行共享锁定,在oracle中用户可以通过lock table in row share mode 语句显示获得行共享锁定。行共享锁定并不防止对数据进行更改操作,但是防止其他会话获取独占性数据表锁定。

  2 行独占锁定:通过一条insert,update,delete语句隐式获取,或者通过一条lock table in row exclusive mode 语句显示获取。这个锁定可以防止其他会话获取一个共享锁定,共享行独占锁定或者独占锁定。

  3 表共享锁定:通过一条lock table in share mode 语句显示获得,这种锁定可以防止其他会话获取行独占锁定(insert,update,delete),或者防止其他表行独占锁定或者表独占锁定,他允许在表中拥有多个行共享和表共享锁定

  4 表共享行独占:通过lock table in share row exclusive mode 语句显示获得,这种锁定可以防止其他会话获取一个表共享锁定,只是一次只能对一个表放置表共享行独占锁定

  5 表独占:通过lock table in  exclusive mode显示获得,这个苏定防止其他会话对该表的任何其他锁定

posted @ 2014-01-17 22:51  接天居士  阅读(227)  评论(0编辑  收藏  举报