通过锁来实行并发控制
读写锁
共享锁(读锁):也就是共享的,多个线程可以进行叠加。多个线程同一时刻可以同时读取同一个资源,而互不干扰
排它锁(写锁):一个排它锁会阻塞其它线程的共享锁和排它锁。同一时刻,只有一个线程可以读取资源
锁粒度
在给定的资源上,锁定的数据量越少,则系统的并发程度越高,只要相互之间不发生冲突即可。
表锁 (table lock)
表锁是MySQL中最基本的锁策略,并且是开销最小的策略。
它会锁定整张表。一个用户在对表进行写操作(插入、删除、修改等),需要先获得写锁,这会阻塞其他用户对该表的所有读写操作。只有没有写锁时,其他读取的用户才能获得读锁,读锁之间是不相互阻塞的。
写锁比读锁拥有更高的优先级,因此一个写锁请求可能会被插入到读锁队列的前面
行级锁(row lock)
行级锁可以最大程度地支持并发处理(同时也带来了最大的锁开销)