并发控制
无论什么时候,只要有多个线程(或进程)同一数据修改数据,就会产生并发控制问题
读写锁
共享锁和排他锁(或者是读锁和写锁)
- 读锁: 共享的,多用户可以同时读取同一个资源,相互不干扰
- 写锁: 排他,会阻塞其他的读锁或者写锁,只能一个用户写入
锁粒度
尽量只锁住需要修改的内容,而不是所有资源。任何时候,在给定的资源上,锁的数量越少,冲突越少,那么系统的并发程度就越高。
锁也耗资源,锁的操作包括,检查所是否已经解除,获得锁,释放锁,这些都会增加系统开销,进而影响系统性能。锁策略,就是在锁的开销和安全性之间寻求平衡。一般会采用行级锁,MySQL提供了多个选择,每种存储引擎都能实现自己的锁
表锁
MySQL中最基本的锁策略,开销最小,粗暴简单。锁住整张表,需要拿到该锁才能进行增改删,而且该锁还会阻塞其他用户的读。只有没有写锁时,多用户才能同时读取。
另外MySQL会在使用alert table之类的语句中使用表锁,忽略存储引擎自己的锁
.....
剩余部分请看原文
网友评论