mysql 锁的概念

点击量:31

为什么需要锁,锁是为了解决什么问题

解决并发时,多个用户同时修改,这样会导致数据不一致

并发控制,通过两种锁,共享锁(读锁),排它锁(写锁)
读锁之间是不会阻塞的,写锁是阻塞的

为什么需要读锁

读锁与读锁不互斥,读锁与写锁互斥,写锁与写锁互斥。

看起来好像不需要读锁,但是还是应该有,因为有读的时候应该排斥写锁,等我读完你再写入

为什么锁分了很多粒度

因为锁的粒度决定了两个东西,并发和性能
锁的范围越小,并发越高,但是相应的性能越差
表锁的性能最高,但是并发最差

表锁例子

当需要对表进行增删改时,添加了一个写锁,所以会阻塞其他的读写锁,
只有当这个写锁被释放之后,其他用户才能操作

某些特定情况下,表锁可能有良好的性能,比如READLOCAL表锁

服务器会为ALTER TABLE之类的语句使用表锁而忽略存储引擎的锁机制

行锁

并发最高,但是同时也是性能最差

发表评论

电子邮件地址不会被公开。

13 + 2 =