zoukankan      html  css  js  c++  java
  • 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表在任何库下都没有发现。 

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

  • 相关阅读:
    LeetCode0350.两个数组的交集 II
    LeetCode0055.跳跃游戏
    LeetCode0739.每日温度
    LeetCode面试题46.把数字翻译成字符串
    LeetCode0128.最长连续序列
    LeetCode面试题29.顺时针打印矩阵
    LeetCode0238.除自身以外数组的乘积
    2020软件工程最后一次作业
    如何防止XSS攻击
    需求规格说明书
  • 原文地址:https://www.cnblogs.com/zmc60/p/14980141.html
Copyright © 2011-2022 走看看