mysql latch和缓存关系_MySQL中lock与latch的区分

这里要区分锁中容易令人混淆的概念lock与latch。在数据库中,lock与latch都可以成为锁,但两者有截然不同的含义

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

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

ec7c143249c6c76c25c942a66b499995.png

在InnoDB存储引擎中的latch,可以通过命令SHOW ENGINE INNODB MUTEX 来进行查看

mysql>SHOW ENGINE INNODB MUTEX;+--------+-------------------+-------------+

| Type | Name | Status |

+--------+-------------------+-------------+

| InnoDB | dict0dict.cc:1057 | os_waits=2 |

| InnoDB | log0log.cc:844 | os_waits=1 |

| InnoDB | fil0fil.cc:1690 | os_waits=1 |

| InnoDB | dict0dict.cc:1066 | os_waits=3 |

| InnoDB | log0log.cc:907 | os_waits=11 |

+--------+-------------------+-------------+

5 rows in set (4.14 sec)

在DEBUG版本下,通过SHOW ENGINE INNODB MUTEX 可以看到latch的更多信息

060705c7aa8bf9f62a39cc48ebcecdf3.png

通过上述例子可以看到,type显示的总是InnoDB,列Name显示的是latch的信息及所在的源码位置(行数)。列Status比较复杂,在DEBUG模式下,除了显示os_waits,也会显示count、spin_waits、spin_rounds、 os_yields、os_wait_times等信息。

5e81845728088f5b1ee8da4cb97775c2.png

相对于latch来看,lock信息就显得直观了。可以通过SHOW ENGINE INNODB STATUS 及information_schema架构下的INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS来观察锁的信息 。

原文:http://www.cnblogs.com/olinux/p/5174145.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值