18 Mysql之innodb锁浅谈01

1.前言

  在开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面还需要确保每个用户能一一致性的方式读取和修改数据,为此就有了锁的机制。

2.lock和latch

  latch一般称为闩锁(一种轻量级的锁),在innodb存储引擎中,latch又可以分为mutex(互斥量)和rwlock(读写锁)。其目的是用来保证并发线程操作临界资源的正确性,并且通常没有死锁检测机制。

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

  区别:

  

 这里主要会讲lock锁,如果有遇到latch锁的情况,这里会回来补充。

 通常想要查看lock信息,我们可以通过命令show engine innodb status以及information_schema架构下的表innodb_trxinnodb_locksinnodb_lock_waits来查看信息。

 说明:我当前mysql是5.7.30-log版本,在information_shcema库下还有以下三张表,但是在8.0.25版本中,information_schema中只有innodb_trx表,而innodb_lock_waits在sys库下,innodb_locks表在任何库下都没有发现。 

          因此这里要特别要注意一下版本!

原文地址:https://www.cnblogs.com/zmc60/p/14980141.html