0

0

什么是latch?latch与lock的区别

PHP中文网

PHP中文网

发布时间:2017-06-20 15:05:54

|

9460人浏览过

|

来源于php中文网

原创

latch

什么是latch:

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

latchlock的区别

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

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

同过show engine innodb mutex 进行查看latch

 

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

latch的分类

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

     RW-LATCH : 读写锁

latch的理解:

一个例子:

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

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

 

errorlog 的压测示例:

 

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

 

latch争用过程

1a x访问链表

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

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

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

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

6)操作系统将bcpu中踢出

latch锁特点:

  • 1.不排队

  • 2.spin

  • 3.os waits

  • 4.cpu繁忙

mutex:

      内存结构 很小 数据库从操作系统申请到的,不占用buffer pool,完全排他

 mutex锁的持有过程: 

  a线程持有想mutex内存数据结构中写一个1

    b线程看到内存数据结构有数字, 那么就去spin

汉仪书宋一字体
汉仪书宋一字体

汉仪书宋一简是汉仪字库里面宋体的一种,与宋体字没什么区别,通常用于特殊提醒如批注中。

下载

确认latch争用类型:

(这就是在源码中的173语句)由errorlog 得到的

 

latch争用的过程

链表上有一个链的保护机制latch,小内存结构,这时候有读的线程a上来要读取链,这个时候这个管理就变成r,读锁,当在链上找到数据的时候(),一找到就释放读锁,b上来也要读取,这时候一看是r,读锁是可以共享的,她也是对链进行访问读取的,c上来要修改链中的两个块的内容,一看是rrw是互斥的,不能够同时进行,要么

1、主动要求退出cpu

2、空占着cpu资源(执行一段空代码,loop,隔一段时间看看ab有没有使用完(spin),但是在这个过程中因为c没有排队等待,所以可能在等待的过程中又有其他的线程上来霸占链,如果执行多次仍这样,可能就sleep,退出cpu了)为什么空占(害怕操作系统看她闲的把他强行拖走),等(因为他知道ab占用了资源时间比较短,就是遍历一条链的时间非常短)。

latch争用的现象:

1latch争用会表现为cpu繁忙

2latch争用没有排队,等一段随机的时间再回来看一看

监控指标

----------

SEMAPHORES

----------

OS WAIT ARRAY INFO: reservation count 2

OS WAIT ARRAY INFO: signal count 2

RW-shared spins 0, rounds 4, OS waits 2

RW-excl spins 0, rounds 0, OS waits 0

RW-sx spins 0, rounds 0, OS waits 0

Spin rounds per wait: 4.00 RW-shared, 0.00 RW-excl, 0.00 RW-sx

rounds的意思是每次询问旋转的参数

os waits:表示sleep,当突然增长比较快的时候,说明latch争用比较严重

rw-shared spin 的次数

rw-excl  spin的次数

latch争用发生的原因

1、内存访问太频繁(不停地找)

2list链太长(链上挂10000个快,被持有的几率太大)

所以有时候会增加instance的数量,把大pool切成小的pool,让list链变的短一些

如何降低latch争用:

如果出现latch争用比较严重

1.优化sql,降低对内存读的数量——效果比较明显

2.增加instances的数量

如何准确发现解决latch

1.show engine Innodb mutex

2.查看什么类型的latch

3.定位sql

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 812人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号