读写锁
mysql有两种类型的锁:
共享锁(shared lock)/读锁(read lock):共享的,或者说是相互不阻塞的。多个客户在同一时刻可以同时读取同一个资源,而互不干扰。
排他锁(exclusive lock)/写锁(write lock):写锁则是排他的,也就是说一个写锁会阻塞其他的写锁和读锁,这是出于安全策略的考虑,只有这样,才能确保在给定的时间里,只有一个用户能执行写入,并防止其他用户读取正在写入的同一资源。
锁粒度
表锁(table lock):表锁是MySQL中最基本的锁策略,并且是开销最小的策略。它会锁定整张表。一个用户在对表进行写操作(插入、删除、更新等)前,需要先获得写锁,这会阻塞其他用户对该表的所有读写操作。只有没有写锁时,其他读取的用户才能获得读锁,读锁之间是不相互阻塞的。
行级锁(row lock):行级锁可以最大程度地支持并发处理(同时也带来了最大的锁开销)。
