`
thrillerzw
  • 浏览: 139178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库锁

 
阅读更多

锁是数据库为了保证数据一致性,对并发访问的控制。写锁(排他锁)不让其它加读锁、写锁。读锁(共享锁)允许其它加读锁。

表锁:管理锁的开销最小,并发最小(资源争用的概率最大),最不容易发生死锁。行锁相反。页锁处于两者之间。

一、mysql 

1、 MyIsam存储引擎、mysql本身(如alert table)使用表锁,

2、 falcon引擎使用行锁

3 、InnoDB通过索引上的索引项来加锁,只有通过索引条件检索数据, InnoDB 才使用行级锁,否则使用表锁

InnoDB实际上有四种锁,即共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX);

如果某些资源已经有了一个共享锁,那么在这些资源上面可以添加其他的共享锁,但不能添加排他锁;如果某些资源已经有了一个排他锁,那么在这些资源上不能添加其他的排他锁和共享锁,只能等待当前锁的释放,并获取锁资源后,才能对其加锁,但可以对其添加意向锁,即如果等待事务想要添加的是排他锁,那么可以在锁定行的所在表添加意向排他锁,如果等待事务想要添加的是共享锁,那么可以在锁定行所在表添加意向共享锁。

 

 

 

二、oracle

Oracle采用的是行锁,通过在数据块中对相应数据行加锁来实现的。

 

ORACLE里的锁有以下几种模式:   
  0:none 
  1:null 空 
  2:Row-S 行共享(RS):共享表锁 
  3:Row-X 行专用(RX):用于行的修改 
  4:Share 共享锁(S):阻止其他DML操作 
  5:S/Row-X 共享行专用(SRX):阻止其他事务操作 
  6:exclusive 专用(X):独立访问使用 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics