MySQL数据库锁

封锁

封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前先向系统发出请求,对其加锁。加锁后事务T就对该对象有了一定的控制,在事务T释放他的锁之前,其他事务不能更新此数据对象,例如事务T1要修改a,若在读出a之前先锁住a,其他事务就不能再读取和修改a了,直到T1修改并写回a后解除了对a的封锁为止,这样就不会丢失T1的修改。

封锁类型

确切的控制由封锁的类型决定,基本的封锁类型有两种,排他锁(exclusive  locks,简称x锁)和共享锁(share locks,简称s锁)。

X锁(排他写锁)

若事务T1对数据对象a加上x锁,则只允许T读取和修改a,其他任何事务都不能再对a加任何类型的锁,直到T释放a上的锁为止,这就保证了其他事务在T释放a上的锁之前不能再读取和修改A;

S锁(共享读锁)

又叫阻塞写锁,若事务T对数据a加上s锁,则事务T可以读a,但是不能修改a。其他事务只能对a加s锁,而不能加x锁,则到T释放a上的s锁为止,这就保证了其他事务可以读a,但在T释放a上的s锁之前不能对a进行任何修改。

posted @ 2023-03-12 10:25  HexThinking  阅读(23)  评论(0编辑  收藏  举报