【封锁粒度】
mysql中提供了两种封锁粒度:行级锁和表级锁
应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。
但是加锁需要消耗资源,锁的各种操作(包括获取锁、释放锁、以及检查锁状态)都会增加系统开销。因此封锁粒度越小,系统开销就越大。
在选择封锁粒度时,需要在锁开销和并发程度之间做一个权衡。
【封锁类型】
1.读写锁
互斥锁:简写为X锁,又称写锁
共享锁:简写为S锁,又称读锁
有以下两个规定:
1.一个事务对数据对象A加了X锁,就可以对A进行读取和更新。加锁期间其他事务不能对A加任何锁
2.一个事务对数据对象A加了S锁,可以对A进行读取操作,但是不能进行更新操作。加锁期间其他事务能对A加S锁,但是不能加X锁。
锁的兼容关系如下: