读写锁
读锁和写锁,读锁也叫 共享锁,写锁也叫 排它锁。
读锁是共享的,相互不阻塞的,多个客户在同一时刻可以同时读取同一个资源,互不干扰。
写锁是排他的,一个写锁会阻塞其他的写锁和读锁。
锁粒度
提高共享资源并发性的方式是让锁定的对象更具有选择性。尽量只锁定需要修改的部分数据,而不是所有资源。任何时候,在给定的资源上锁定的数据量越少,则系统的并发程度越高,只要相互间不发生冲突即可。
但是加锁需要消耗资源。锁的操作,包括获得锁、检查锁是否已经解除、释放锁等。
锁策略,就是在锁的开销和数据的安全性之间寻求平衡。大多数商业数据库一般都是在表上施加行级锁(row-level lock)。
MySQL有多种选择,每种MySQL存储引擎都可以实现自己的锁策略和锁粒度。
表锁(table lock)
表锁是MySQL中最近本的锁策略,并且是开销最小的策略,他会锁定整张表。
尽管存储引擎可以管理自己的锁,MySQL本山还是会使用各种有效的表锁来实现不同的目的,例如,服务器会为 alter table 之类的语句使用表锁,忽略存储引擎的锁机制
行级锁 (row lock)
行级锁可以最大程度地支持并发处理,但也带来了最大的锁开销。行级锁只在存储引擎层实现,MySQL服务器层没有实现。
原文链接:《高性能MySQL》——MySQL并发控制,转载请注明来源!