锁机制用于管理对共享资源的并发访问。
行级锁
行级锁只在存储引擎层实现,在服务器层没有实现。
mysql乐观锁、悲观锁
latch
门闩,因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差。在InnoDB
存储引擎中,latch
又可以分为mutex
(互斥量)和rwlock
(读写锁)。其目的是用来保证并发线程操作临界资源的正确性,并且通常没有死锁检测的机制。
lock
的对象是事务,用来锁定的是数据库中的对象,如表、页、行。并且一般lock的对象仅在事务commt
或rollback
后进行释放(不同事务隔离级别释放的时间可能不同)。此外,lock
,正如在大多数数据库中一样,是有死锁机制的。
死锁
死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象。
锁升级
锁升级是指将当前锁的粒度降低。比如,数据库可以把一个表的1000个行锁升级为一个页锁,或者将页锁升级为表负。如果在数据库的设计中认为锁是一种稀有资源,而且想避免锁的开销,那数据库中会频繁出现锁升级现象。