mysql:锁

锁机制用于管理对共享资源的并发访问。

行级锁

行级锁只在存储引擎层实现,在服务器层没有实现。

mysql乐观锁、悲观锁

latch门闩,因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差。在InnoDB存储引擎中,latch又可以分为mutex(互斥量)和rwlock(读写锁)。其目的是用来保证并发线程操作临界资源的正确性,并且通常没有死锁检测的机制。

lock的对象是事务,用来锁定的是数据库中的对象,如表、页、行。并且一般lock的对象仅在事务commtrollback后进行释放(不同事务隔离级别释放的时间可能不同)。此外,lock,正如在大多数数据库中一样,是有死锁机制的。

死锁

死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象。

锁升级

锁升级是指将当前锁的粒度降低。比如,数据库可以把一个表的1000个行锁升级为一个页锁,或者将页锁升级为表负。如果在数据库的设计中认为锁是一种稀有资源,而且想避免锁的开销,那数据库中会频繁出现锁升级现象。


Donde no hay harina, todo es mohina.