[MySQL Q&A] 关于 table_lock_wait 和 table_lock_immediate

前记      

前几天收到一位同行的一个文档,是MySQL High Performance 2的读书笔记, 97页,6w多字。在描述完知识点后,有疑问的地方列出问题,希望和我讨论。看完以后非常敬佩,自感自己无法做到这么细心。为表敬意,承诺会一一回答里面的问题。对于无法简单回复的问题,就想通过博客的方式写出来,便于讨论。

因此这个系列,就是回复这位同学的文档中的问题的。

 

问题

服务器变量table_locks_immediate和 table_locks_waited#?它们保持多大的比例是合适的?

背景

    table_locks_immediate表示可以立即获取锁的查询次数, table_locks_waited表示不能立即获取锁的次数;

Session 1

Session 2

lock tables t1 read;

(table_locks_immediate+1)

 

 

update t1 set y=1 where id=1;

(locked并且table_locks_waited+1)

上面这个例子很简单,session 1加了表所,但是session 2要更新,获取表锁失败。

 

异象

 

Session 1

Session 2

lock tables t1 write;

(table_locks_immediate+1)

 

 

update t1 set y=1 where id=1;

(locked但table_locks_waited不变)

这个例子看上去像个bug,session 1锁表,session 2试图更新这个表,被锁住了,但是table_locks_waited没有加1,而且查看table_locks_immediate也不变。

其原因是5.5新引入的metadata lock(MDL),对表的访问都需要获取MDL。在这个例子中,session 1拥有一个排他MDL,因此Session2是被锁在获取MDL的阶段。

由于MDL是在获取表锁之前,因此在session 2被lock的时,上述两个变量都不变。

 

什么情况下会触发table_locks_waited

  从上面这个例子看,引入MDL以后,table_locks_waited并不容易触发。除非应用主动作lock tables t read。

  我们用并发压力,两个线程分别执行update t1 set y=y+1 where id=1;各5000次。

 若t1为MyISAM表,MyISAM是表锁,在并发压力下,是会导致table_locks_waited急剧增加。

  而在InnoDB表,由于是行锁,因此获取表锁这个逻辑都能顺利通过,因此table_locks_waited不变。

 

table_locks_waited多少合适

  回到初始的问题,若库中都是InnoDB的表,在5.5以后,table_locks_waited这个值应该很小。在mysqldump导出表时,会执行lock table,可能导致此值增加。其他情况下,若这个值有变,说明应用端主动作了lock table,这个在InnoDB表上是不需要的,需要应用修改。

“三进制”bonsai27b+NInfer=6g显存闪电侠(token真的自由了!) 本文将1.58-bit三元大模型Bonsai27B成功移植至NInfer推理引擎,并在RTX 4080 SUPER上实现100+ token/s的极速推理。通过自研补丁扩展NInfer支持Ada架构与三元量化格式,解决激活布局、行置换等关键bug,实测PPL 6.445,单流吞吐达96.7–130.8 t/s,20题基准得分16/20。附完整复现包(含文档、工具、源码补丁),零权重分发,助力垃圾显卡跑通27B级模型。 阅读详情

相关推荐

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

mysql数据库死锁问题处理

事务锁处理: 1、查看当前进程 mysql> show processlist; 2、查看当前运行的事务 mysql> SELECT * FROM information_schema.INNODB_TRX; 3、当前出现的锁 mysql> SELECT * FROM information_schema.INNODB_LOCKs; 4、kill掉对应进程 kill id ———————————————————— 导读: Mysql数据库的行级锁和表级锁 mysql.

zy103118的博客 5724

naca翼型_STARCCM+计算二维翼型气动性能

STAR-CCM+计算二维翼型气动性能一算例背景机翼理论主要研究翼型在流体中运动时的力学特性。在工程领域中,机翼以升力面、控制面、叶片或桨叶等形式出现。舰船上的舵、水翼、减摇鳍等都是机翼,螺旋桨、汽轮机叶片和压缩机叶片也都是利用机翼原理工作的,而在研究船舶操纵性时,甚至还可把船体的水下部分看作一个巨大的机翼。随着航空科学的发展,世界各主要航空发达的国家建立了各种翼型系列。美国有NACA系...

weixin_39863741的博客 1万+

MySQL锁机制

一、概述 1.1 定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、V/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保让数据开友访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。 从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 1.2 生活购物 打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?

Jak的博客 320

python使用TensorRT报错,多线程或多进程中使用问题

python使用TensorRT报错,Cuda Runtime问题

qq_44224801的博客 747

128x64 OLED屏的救星:手把手教你用纯C实现轻量级多级菜单

本文针对资源受限的单片机开发场景,提供了一套用纯C语言实现128x64 OLED屏轻量级多级菜单的完整方案。该方案摒弃了传统的树形指针结构,创新性地采用哈希表进行菜单项管理,核心代码不足200行,内存占用极低,逻辑清晰且易于维护。文章详细阐述了架构设计、实战演练及性能优化技巧,是STM32、ESP8266等小内存MCU项目的理想选择。

table的专栏 228

查询表锁争用情况 table_locks_waited & table_locks_immedaite

官方的解释 Table_locks_immediate The number of times that a request for a table lock could be granted immediately. Table_locks_waited The number of times that a request for a table lock could not be gr

kf_panda 5103

手把手教你用NetToPLCsim搭建西门子S7-1200仿真环境(附避坑指南)

本文详细指导如何利用NetToPLCsim与PLCSIM搭建西门子S7-1200仿真环境,实现无硬件条件下的PLC程序测试与上位机通信开发。内容涵盖软件选型、环境部署、关键参数配置及通信测试,并重点提供了连接失败、数据读写错误等常见问题的深度避坑指南,帮助工程师高效构建可靠的虚拟调试工作流。

a3b4c5的博客 615

由Table_locks_waited想到的mysql 表锁问题

由Table_locks_waited想到的mysql 表锁问题2010-05-13 13:15MyISAM表锁 一般情况下,MYSQL在更新操作会自动加表锁。不需要显式加锁。除非是数据要求严格的逻辑写顺序。 执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作 (UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,...

xgbjmxn的专栏 1373

QT5.12.1报错:1. clang++:error: :fatal error andriod Input/output error

QT5.12.1报错:1. clang++:error: :fatal error andriod Input/output error 解决方式: 1.qt程序不要放在共享目录下编译,直接拷贝到ubuntu系统中编译 2.修改/home/xt/Qt5.12.1/5.12.1/android_armv7/mkspecs/android-clang中 #QMAKE_LINK = QMAKECXXQMAKE_CXX QMAKEC​XXQMAKE_CFLAGS -Wl,–exclude-libs,libgc

xt18971492243的博客 738

10、边缘智能学习技术解析

本文深入解析了边缘智能学习技术的四大核心方法:联邦学习、DNN拆分、迁移学习和八卦学习。文章从人类大脑的学习机制出发,引出边缘级智能的重要性,并详细阐述各类技术的架构、优势、挑战及适用场景。通过对比分析,展示了不同技术在隐私性、效率、可扩展性等方面的特性,并探讨了未来融合多种技术、软硬件协同优化及应用领域拓展的发展趋势,为边缘智能在物联网与人工智能领域的应用提供了系统性参考。

ppp33的博客 117

Mysql锁基础

【表锁】 偏向MyISAM存储引擎,开销小,加锁快:无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)表独占写锁(Table Write Lock> 锁类型 可否兼容 读锁 写锁 读锁 是 是 否 写锁 是 否 否 结论: 结合上表,所以对MylSAM表进行操作,会有以下情况: 对MylISAM表的读操作〈加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会

qq_41980255的博客 929

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式)

unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。

灵境引路人 4036

mysql 关于table_lock_wait和table_lock_immediate的问题

维护zabbix的同事今天让看看zabbix数据库是否有性能问题,在监控项里有table_lock_wait 和table_lock_immediate两项,table_lock_wait项为0,table_lock_immediate项数值很大。当时不明白这两项监控代表数据库什么性能问题。后查询资料 table_lock_wait 表示不能马上获得锁的数据,table_lock_immediat

aeoluspu的专栏 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL关于table_lock_wait和table_lock_immediate(转)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34220623的博客 1042

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺

可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺: mysql> show status like ‘Table%’; +—————————-+———-+ | Variable_name                | Value     | +—————————-+———-+ | Table_locks_

tianlianchao1982的专栏 5290

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

myqltransactionRollbackexception deadlock found when trying to get lock

linux 下远程连接mysq 命令: mysql -h "1.0.0.1" -u username -p 1获 取锁等待情况 可以通过检查 table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺: mysql> show status like 'Table%'; +------------------...

207

mysql insert 相关的锁函数lock_rec_insert_check_and_lock 源码

/*============ RECORD LOCK CHECKS FOR ROW OPERATIONS ====================*/ /*********************************************************************//** Checks if locks of other transactions prevent

aeoluspu的专栏 811

系统锁定争用情况查询

  系统锁定争用情况查询 分类: MySQL2011-06-28 17:25 3人阅读 评论(0) 收藏 举报       MySQL实现的表级别锁定的争用状态变量   view plain show status like 'table%';   Variable_name           Value   Table_locks_immediat...

fangyong2006的专栏 150

MyISAM表锁的解决方案

Table_locks_immediate和Table_locks_waited两个状态: Table_locks_immediate表示立即释放表锁数,Table_locks_waited表示需要等待的表...

crystal1989220的博客 226

MySQL 入门

本文全面介绍了MySQL数据库及其相关技术,内容涵盖: 数据库基础概念:包括数据库系统组成、关系型与非关系型数据库对比、MySQL核心特点等; MySQL操作管理:详细讲解了安装配置、SQL语句分类、数据类型、索引原理等核心内容; 高级特性:深入分析事务、锁机制、存储引擎、主从复制等关键特性; 扩展架构:系统介绍了读写分离、集群部署、分库分表等企业级解决方案; 开发集成:提供了JDBC连接、MyCat中间件等实践指南。 文章采用结构化组织方式,从基础到高级层层递进,包含了大量实用性强的代码示例和配置模板

weixin_51689532的博客 1243

MySQL与Oracle核心差异:事务、SQL、运维实战指南

关系型数据库是现代应用的数据基石,而MySQL和Oracle作为两大主流代表,其底层事务机制、SQL行为逻辑与运维体系存在本质分野。理解ACID实现路径(如InnoDB的Gap Lock vs Oracle的MVCC)、SQL执行语义差异(分页、类型隐式转换、隔离级别默认值)以及生产级排障方法(慢查询分析、锁等待定位、高可用架构),是保障系统稳定性与迁移成功率的关键。尤其在电商、金融等强事务场景中,对MySQL的Buffer Pool管理、Oracle的SGA分区、Redo/Undo日志设计等内核机制的掌握

weixin_33884611的博客 415

mysql锁

show status like ‘table%’; Table_locks_immediate 能够立即获得表级锁的次数 Table_locks_waited 不能立即获取表级锁而需要等待的次数,值比较高说明存在着较严重的表级锁争用情况 show status like ‘innodb_row_lock%’ InnoDB_row_lock_waits和InnoDB_row_lock_time_a...

zhlsygtc的博客 189

mysql查看锁表方法详解

mysql查看锁表方法详解   1、show OPEN TABLES where In_use > 0; 查看哪些表在使用中,In_use列表示有多少线程正在使用某张表,Name_locked表示表名是否被锁,这一般发生在Drop或Rename命令操作这张表时。所以这条命令不能帮助解答我们常见的问题:当前某张表是否有死锁,谁拥有表上的这个锁等。     2、show stat...

duncan 2348

percona模板图形解释

percona监控mysql的几张图形解释 最近,我仔细研究了一下percona监控mysql的几张图的含义。 Com_XXX表示每个XXX语句执行的次数如: ...

cjfcxf010101的博客 182

my-tv:免费看电视直播的软件,3 步装好直接看

my-tv 是一款运行在安卓智能电视与电视盒子上的电视直播软件。免注册、免会员、无广告,装上 APK 就能直接看直播,从安装到打开全程约 3 分钟。 [![my-tv 电视直播软件遥控器按键操作示意图](https://raw.gitcode.com/GitHub_Trending/my/my-tv/raw/d65ac508eb56d454d565d7a53df35fa4d5403720/scr

gitblog_01077的博客 146
上一篇: MySQL字符集和copy_and_convert
下一篇: Doublebinlog for MySQL
iteye_621
博客等级 码龄8年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值