程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁( 六 )

简单来说就是给更大一级别的空间示意里面是否已经上过锁 。 例如表级放置了意向锁 , 就表示事务要对表的页或行上使用共享锁 。 在表的某一行上上放置意向锁 , 可以防止其它事务获取其它不兼容的的锁 。 意向锁可以提高性能 , 因为数据引擎不需要检测资源的每一列每一行 , 就能判断是否可以获取到该资源的兼容锁 。 意向锁包括三种类型:意向共享锁(IS) , 意向排他锁(IX) , 意向排他共享锁(SIX) 。

实际应用中 , 站在数据的角度可以看出 , 数据只允许同时进行一个写操作

颗粒度角度

锁用来对数据进行锁定 , 我们可以从锁定对象的粒度大小来对锁进行划分 , 分别为行锁、页锁和表锁 。

1. 行级锁是数据库中锁定粒度最细的一种锁 , 表示只针对当前操作的行进行加锁 。 行级锁能大大减少数据库操作的冲突 。 其加锁粒度最小 , 但加锁的开销也最大 。 特点:开销大 , 加锁慢;会出现死锁;锁定粒度最小 , 发生锁冲突的概率最低 , 并发度也最高 。

推荐阅读