文章目录

  • 一、latch
    • 1.1 latch介绍
    • 1.2 latch相关特点
      • 1.2.1 latch争用过程
      • 1.2.2 mutex锁的持有过程
      • 1.2.3 latch锁特点
      • 1.2.4 监控指标
      • 1.2.5 latch争用发生的原因
      • 1.2.6 如何降低latch争用
      • 1.2.7 如何准确发现解决latch
  • 二、latch与lock区别

一、latch

1.1 latch介绍

  latch 称为闩锁,只作用于内存数据结构,latch 是轻量级的锁,线程通常只在临界区内读写共享内存数据结构时持有 latch,因此 latch 的锁定时间一般很短并且频繁使用,latch 的获取和释放需要尽量小的消耗和更好的性能。在Innodb存储引擎中,latch又可以分为mutex(互斥量)和RW-Lock(读写锁)。
innodb使用show engine innodb mutex进行查看latch

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

1.2 latch相关特点

1.2.1 latch争用过程

  • a 以x锁访问链表
  • b 排队等待x锁,占了cpu,但是cpu发现在等待,所以cpu将b踢出
  • a很快会释放锁,所以b不去排队,这时会去spin,空转cpu,然后再去看一下内存数据结构,a是否已解锁
  • b转了一圈后,在b spin的时间段的时间中,c进来了,连续多次的spin后, 产生了os waits
  • 操作系统将b从cpu中踢出

1.2.2 mutex锁的持有过程

  • a线程持有想mutex内存数据结构中写一个1
  • b线程看到内存数据结构有数字, 那么就去spin

1.2.3 latch锁特点

1、不排队
2、spin
3、os waits
4、cpu繁忙

1.2.4 监控指标

----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 0
OS WAIT ARRAY INFO: signal count 0
RW-shared spins 0, rounds 0, OS waits 0
RW-excl spins 0, rounds 0, OS waits 0
RW-sx spins 0, rounds 0, OS waits 0
Spin rounds per wait: 0.00 RW-shared, 0.00 RW-excl, 0.00 RW-sx
rounds的意思是每次询问旋转的参数
os waits:表示sleep,当突然增长比较快的时候,说明latch争用比较严重
rw-shared spin 的次数
rw-excl  spin的次数

1.2.5 latch争用发生的原因

1、内存访问太频繁(不停地找)
2、list链太长(链上挂10000个快,被持有的几率太大)
所以有时候会增加instance的数量,把大pool切成小的pool,让list链变短,降低争用

1.2.6 如何降低latch争用

1、优化sql,降低对内存读的数量,效果比较明显
2、增加instances的数量

1.2.7 如何准确发现解决latch

1、show engine Innodb mutex
2、查看什么类型的latch
3、定位sql

二、latch与lock区别

  lock 用于隔离多个事务,锁定的对象是数据库逻辑内容,例如 table、record、B-tree keys、key range 等,通常锁定时间很长,在事务结束时才释放。lock 会参与死锁检测,也支持复杂的调度策略,例如使用队列来排队加锁请求,因此 lock 申请和释放是比较耗时的,通常要上千的 CPU 周期。数据库系统通常会实现 lock table,因为 lock table 是共享的内存数据结构并且会有多个线程并发访问,因此访问 lock table 也就需要 latch 来保护。

  latch 可以直接嵌入要保护的数据结构,例如,对于内存池中的磁盘数据页,每个数据页都有一个内存描述符结构记录 page id 等信息,而数据页对应的 latch 就可以嵌入到这个描述符结构中。 lock 用于保护逻辑的数据库内容,被保护的数据可能都不在内存里出现,因此 lock 也就无法像 latch 一样嵌入要保护的对象。

  • lock事务 transaction 并发访问数据内容时的并发控制;
  • latch线程 thread 并发访问内存数据结构时的并发控制;

MySQL latch相关推荐

  1. MySQL latch小结

    lock和latch的比较 对于INNODB存储引擎中的latch可以通过命令 SHOW ENGINE INNODB MUTEX 看到latch的更多信息 说明: 列Type显示的总是 InnoDB. ...

  2. MySql—锁机制原理

    原文作者:蹲厕所的熊 原文地址:谈谈MySQL的锁 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或线程并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源 ...

  3. 常用数据库 知识点大全 (Mysql,Redis,MongoDB)

    目录 Mysql 1.1 5大引擎 共10个 1.2 事务 1.3 锁1 锁2 1.4 Btree/B+tree 1.5 mysql进阶 Redis 2.1 Redis介绍 2.2 redis的五大数 ...

  4. mysql 代替不明_所有的死锁,都是不明就里的循环。又一必须升级MySQL的死锁问题!!!...

    原标题:所有的死锁,都是不明就里的循环.又一必须升级MySQL的死锁问题!!! 去年年底到今年年初,线上发生了3次MySQL数据库hang住的情况.在内部,我们将其称为半死不活的场景.具体的表现表现如 ...

  5. MySQL 锁的相关知识 | lock与latch、锁的类型、简谈MVCC、锁算法、死锁、锁升级

    文章目录 lock与latch 锁的类型 MVCC 一致性非锁定读(快照读) 一致性锁定读(当前读) 锁算法 死锁 锁升级 lock与latch 在了解数据库锁之前,首先就要区分开 lock 和 la ...

  6. mysql热块争用_Oracle 索引热块引起的latch争用实例分析(转)

    转自:http://www.itpub.net/thread-1748214-1-1.html 引言:索引的热块其实和数据块的热块发生的原理大相径庭,也都是因为大量会话一起访问同一个索引块造成的,我们 ...

  7. 数据库分享一: MySQL的Innodb缓存相关优化

    无论是对于哪一种数据库来说,缓存技术都是提高数据库性能的关键技术,物理磁盘的访问速度永 远都会与内存的访问速度永远都不是一个数量级的.通过缓存技术无论是在读还是写方面都可以大大提 高数据库整体性能. ...

  8. 读 MySQL 源码再看 INSERT 加锁流程

    欢迎关注方志朋的博客,回复"666"获面试宝典 在之前的博客中,我写了一系列的文章,比较系统的学习了 MySQL 的事务.隔离级别.加锁流程以及死锁,我自认为对常见 SQL 语句的 ...

  9. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  10. mysql占用cpu_Mysql占用过高CPU时的优化手段(必看)

    Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show process ...

最新文章

  1. Android4.0 修改系统屏幕分辨率方法
  2. Linux按照CPU、内存、磁盘IO、网络性能监测
  3. 百老汇原版音乐剧《摇滚学校》2月开启中国巡演
  4. Express Cookie 的基本使用
  5. 在地址栏里输入一个URL,到这个页面呈现出来,中间会发生什么?
  6. osx10.15.5降级成10.3.3
  7. E: Malformed line 60 in source list /etc/apt/sources.list (dist parse)
  8. LTE学习:同步信号
  9. python抓取图片数字_Python OCR提取普通数字图形验证中的数字
  10. python - color print
  11. ElasticSearch学习(2)-Java接口操作ElasticSearch
  12. document.documentElement.clientWidth与document.body.clientWidth在浏览器滚动条的情况
  13. 新知实验室 TRTC实时音视频通讯方案在业内的QoS水平
  14. “元宇宙”是什么?涂子沛:人可在数据空间“复活”
  15. 2022年疑点事件:NMN到底是什么?nmn到底有没有用?
  16. 使用IDEA工具远程调试SpringBoot应用
  17. 手把手教你安装虚拟机16
  18. bittorrent端口_如何在Linux防火墙中启用BitTorrent端口?
  19. 最新消息,青岛的农贸市场将迎来大变革
  20. 使用 Ghidra 分析 phpStudy 后门

热门文章

  1. 广义表(Generalized Lists)
  2. 细述微信浏览器打不开文件下载链接的几种解决方案
  3. 超好用笔记软件Typora安装教程
  4. wei gwei ether之间的转换关系
  5. svchost.exe占用网速多
  6. 解决安卓机拍照,照片显示自动旋转90度问题
  7. Cadence 17.2( Allegro PCB ) 使用 Shape Symbol 制作不规则焊盘
  8. 浪漫七夕—很幸运一路有你
  9. 树形DP--bzoj4987: Tree
  10. 水泥路面、桥梁基建、隧道裂痕裂缝检测数据集