MySQL-并发控制

397 阅读1分钟

通过锁来实行并发控制

读写锁

共享锁(读锁):也就是共享的,多个线程可以进行叠加。多个线程同一时刻可以同时读取同一个资源,而互不干扰

排它锁(写锁):一个排它锁会阻塞其它线程的共享锁和排它锁。同一时刻,只有一个线程可以读取资源

锁粒度

在给定的资源上,锁定的数据量越少,则系统的并发程度越高,只要相互之间不发生冲突即可。

表锁 (table lock)

表锁是MySQL中最基本的锁策略,并且是开销最小的策略。

它会锁定整张表。一个用户在对表进行写操作(插入、删除、修改等),需要先获得写锁,这会阻塞其他用户对该表的所有读写操作。只有没有写锁时,其他读取的用户才能获得读锁,读锁之间是不相互阻塞的。

写锁比读锁拥有更高的优先级,因此一个写锁请求可能会被插入到读锁队列的前面

行级锁(row lock)

行级锁可以最大程度地支持并发处理(同时也带来了最大的锁开销)