意向锁(Intention Lock)

背景:数据库中的数据的操作:读数据,写数据;所以在这个粒度下就存在两种锁:

             (1)读锁      (s锁)    共享锁,事务A在读数据的同时,事务B也可以读,

             (2)写锁      (X锁)   排他锁 ,事务A在写数据的时候,其他的事务必须等待A事务,完成任务以后,释放了该锁

一般的锁,在不同粒度上又划分为

              (1) 表级锁

              (2)行级锁

  问题导入:为什么会用到意向锁?

                    当我们向一张表加入表级锁的时候,这时候我们必须去表中每一行去遍历,看看对应的行是否已经用到对应的锁,这时候如果数据库中的数据海量的话,想要完成这个认为的难度就非常的大,难道没有一个好的方法?

               意向锁在原有的锁(X锁和S锁)引入了新的锁(IX和IS)锁 

               意向锁是个表级锁

              获得锁:(获得对象锁)

                         IX  --表示 如果有事务想获得数据对象X锁之前,先获得表IX锁

                         IS -- 表示如果事务想要获得数据对象S锁之前,先获得表IS锁

              加锁:(加入表级锁)

                           如果事务对表加X锁,看看有没有其他的事务对表加锁(S/X/IS/IX)如果有的话,加索失败

 细节:

        

  • 任意 IS/IX 锁之间都是兼容的,因为它们只是表示想要对表加锁,而不是真正加锁;
  • S 锁只与 S 锁和 IS 锁兼容,也就是说事务 T 想要对数据行加 S 锁,其它事务可以已经获得对表或者表中的行的 S 锁。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值