• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 什么是latch?latch与lock的区别

什么是latch?latch与lock的区别

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL,latch,详解,闩锁,中的等相关知识,希望本文的分享对您有所帮助
Latch

什么是latch:

  锁是数据库系统区别与文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。Innodb存储引擎在行级别上对表数据上锁,这固然不错。但是Innodb也会在多个地方使用锁,从而允许多种不同资源提供并发访问。例如,操作缓冲池汇总的LRU列表,删除、添加、移动LRU列表中的元素,为了保证一致性,必须有锁的介入,这就是latch锁。

latch与lock的区别

  latch一般称为闩锁(轻量级别的锁),因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差。在Innodb存储引擎中,latch又可以分为mutex(互斥量)和RW-Lock(读写锁)。

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

同过show engine innodb mutex 进行查看latch

name列显示的是latch的信息以及源码所在的位置(行数)。

latch的分类

分为:mutex:互斥量;有时候有些资源需要共享和并发,但是又不是分频繁,所以向操作系统申请一个mutex,mutex都是排他的。

   RW-LATCH : 读写锁

latch的理解:

一个例子:

当我们在执行select 时,数据是缓存在buffer pool中的,多个线程并发访问或者修改这个数据必然需要一个并发控制机制,这个就是latch

数据库要访问的数据必须先存在缓存中,而缓存一般比磁盘空间要小,数据缓冲使用hash表来记录数据页是否在内存中。在MySQL中对应的RW-Latch在errlog中说的很清楚,该RW-Latch是在buf0sea.cc的658行创建的RW-Latch。

看errorlog 的压测示例:

根据日志我们可以分析到线程140140355766016要对记录加一个x锁,但是等待线程0x4c407b8线程的RW-Latch的释放。

latch争用过程

1)a 以x访问链表

2)b 排队等待x解锁 占了cpu,但是cpu发现你在等待,所以cpu将b踢出

3)锁链的时间,就是找数据的时间。

4)b知道很a快所以,b不去排队,这是后去spin 也就是空转cpu,然后再去看一下内存数据结构,a是否已解锁

5)b转了一圈后,在bspin的时间段的时间中,c进来了,连续多次的spin后, 产生了os waits

6)操作系统将b从cpu中踢出

latch锁特点:

  • 1.不排队

  • 2.spin

  • 3.os waits

  • 4.cpu繁忙

mutex:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05MySQL数据库可视化工具SQLyogEnt怎么用?
  • 2018-12-05两大步骤教您开启MySQL 数据库远程登陆帐号的方法
  • 2017-09-08MySQL 数据库常用命令小结
  • 2018-12-05SQLServer 2008中的代码安全(七) 证书加密
  • 2018-12-05MongoDB结合Flexgrid的简单数据呈现
  • 2018-12-05数据库-函数mysql_connect的使用
  • 2017-05-11命令行模式下备份、还原 MySQL 数据库的语句小结
  • 2018-12-05SQL Server 数据库备份和还原认识和总结(二)
  • 2018-12-05mysql升级后不能启动 的解决方法
  • 2018-12-05Mysq的一些​常见误区

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • sqlserver 中时间为空的处理小结
    • 远程访问MySQL数据库的方法小结
    • MySQL日期函数详解
    • mysql innodb的监控(系统层,数据库层)的实例代码详解
    • mysql启动的error 2003和1067错误问题解决方法
    • MySQL 数据库 source 命令详解_MsSql
    • MySQL 建表的优化策略 小结
    • mysql 让一个存储过程定时作业的代码
    • MySQL基本调度方法浅析
    • MySQL 排序

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有