死锁分析延续

简介: 可知上一篇【死锁分析】,又重新表达了一些图片,图画更了

可知上一篇【死锁分析】,又重新表达了一些图片,图画更了

【使用电脑阅读更佳】

image.png

事务1 事务2
- 开始
开始 删除id=1;(1)id加锁、(2)A加锁
删除id=2;(3)id加锁、(4)A加锁 -
  • | 更新 ?用户ID=?和租户ID=?没有=?;
  • | 如果先走无索引,已经持有B锁,再去持D锁时等待更新?用户ID=?和租户ID=?没有=?;| - 先走无索引,持B锁时等待;死锁 |-

更新 ?用户ID=?和租户ID=?and no=?如果先走(tenantid ,user id);这个日志一

先走不,日志二

索引,常用日志三


最近的事情,习了部分数据库的理论知识,后面又有温时间再整理。现在的程序员也真得难得知天文,下地理;这应该是DBA的,作为开发者的长,作为开发者深研,真难

在追查死锁的过程中,对照组的理论有一些做法,总结一下:

查看自动提交事务选项

show session variables like 'autocommit';
show global variables like 'autocommit’;
set session autocommit=0;
set global autocommit=0;

查看事务隔离等级

select @@tx_isolation

查看锁信息,想查看一条sql使用锁,需要打开锁监听

show session variables like '%output%';
#开启InnoDB锁监控
set global innodb_status_output_locks=on;
set global innodb_status_output=on;
#上面的语句可定期写入到标准错误输出(stderr,即error log,大概每15s写一次),你也可以使用 SHOW ENGINE INNODB STATUS 语句直接在客户端获取innodb信息
show session variables like '%output%';

要启用 InnoDB 锁定的 SHOW ENGINE INNODB STATUS 输出,立即启用 innodb状态output_locks

打开监控开关后,在mysql日志文件中会出现

=====================================
2020-06-30 15:44:46 7fdc8a76e700 INNODB MONITOR OUTPUT
=====================================
----------------------------
END OF INNODB MONITOR OUTPUT
============================

打开监控,可以确定一下常用锁的语句信息

执行完一条SQL,使用SHOW ENGINE INNODB STATUS打印出锁信息

delete from invoice_collection_info where id=1275244823997059072
TABLE LOCK table `assist`.`invoice_collection_info` trx id 1636893 lock mode IX
RECORD LOCKS space id 18491 page no 211 n bits 104 index `PRIMARY` of table `assist`.`invoice_collection_info` trx id 1636893 lock_mode X locks rec but not gap

删除语句,根据主键操作;可以显示删除表锁IX模型,还有一个主键索引锁

就是如果有一段索引,所以会有第二次索引锁,但那是显示隐式的,后面没有显示锁式,后面会有试验让隐式锁化


使用第一索引删除操作

delete FROM invoice_item WHERE ( collection_id = 1275244823997059072 );
TABLE LOCK table `assist`.`invoice_item` trx id 1636964 lock mode IX
RECORD LOCKS space id 18493 page no 4 n bits 784 index `idx_collection_id` of table `assist`.`invoice_item` trx id 1636964 lock_mode X locks rec but not gap
Record lock, heap no 563 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
 0: len 8; hex 91b2946930001000; asc    i0   ;;
 1: len 8; hex 91b2ae5d61401000; asc    ]a@  ;;
RECORD LOCKS space id 18493 page no 12 n bits 96 index `PRIMARY` of table `assist`.`invoice_item` trx id 1636964 lock_mode X locks rec but not gap
Record lock, heap no 28 PHYSICAL RECORD: n_fields 23; compact format; info bits 0

先在第一索引上加锁,再在的主键索引上加锁


使用第一索引查询

select * from invoice_collection_info where invoice_uiq_flag = '031001900104-62079412' for update
TABLE LOCK table `assist`.`invoice_collection_info` trx id 1636947 lock mode IX
RECORD LOCKS space id 18491 page no 642 n bits 344 index `idx_uniflag` of table `assist`.`invoice_collection_info` trx id 1636947 lock_mode X locks rec but not gap
RECORD LOCKS space id 18491 page no 496 n bits 96 index `PRIMARY` of table `assist`.`invoice_collection_info` trx id 1636947 lock_mode X locks rec but not gap

从日志中,先在invoice_uiq_flg索引上加锁,再在主键加锁


使用主键更新操作

update invoice_collection_info set invoice_uiq_flag = '031200190010-62079412' WHERE (  id = 1275244823997059072 );
TABLE LOCK table `assist`.`invoice_collection_info` trx id 1636958 lock mode IX
RECORD LOCKS space id 18491 page no 741 n bits 88 index `PRIMARY` of table `assist`.`invoice_collection_info` trx id 1636958 lock_mode X locks rec but not gap

这会在但主键加X,同时在同一索引上显示也加X,有一次没有出来;这里跟删除,其实也是个式锁


模拟测试,操作主键,更新索引列表删除,另一条使用记录类似死锁,把更新中的一段代码显示出来了

image.png


在RC等级下进行的操作,对于选择操作,读取结果都不会加锁,也不会加理论与理论

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
JavaScript
JS自动生成速记符、拼音简写/拼音的声母(例如:“你挚爱的强哥”转换为“NZADQG”)。提取首字母,返回大写形式;提取拼音, 返回首字母大写形式(全拼)。
JS自动生成速记符、拼音简写/拼音的声母(例如:“你挚爱的强哥”转换为“NZADQG”)。提取首字母,返回大写形式;提取拼音, 返回首字母大写形式(全拼)。
29009 0
|
10月前
|
人工智能 安全 算法
别再刷短视频了!你的赛博替身正在工厂拧螺丝:揭秘 AI Agent 搭建师
本文揭秘AI Agent搭建师这一新兴职业:不教人用AI,而是教人“克隆”24小时在线、永不摸鱼的数字分身。涵盖认知架构、提示词工程、RAG增强、自动化流、工具调用、自主循环、记忆持久化等12大核心能力,揭示如何将AI从聊天机器人升级为可落地的“数字合伙人”。
567 7
|
10月前
|
人工智能 人机交互 语音技术
输入剧本即可生成漫剧:360 短剧智能体如何落地执行型 AI
2026 年全球将迎来“百亿智能体”时代,这意味着AI从大模型到可以生成能力到可执行能力智能体,360宣布即将发布一款 短剧智能体,即用户只需输入剧本,它就能生成漫剧大片,极大降低影视内容创作门槛。
751 0
|
10月前
|
人工智能 运维 监控
AI领域优质知识类博主深度推荐:技术、商业与伦理的跨界布道者
2025年AI浪潮中,十位知识博主脱颖而出,覆盖技术、工程、商业与伦理四大维度。他们以学术深度与实战经验,打通从理论到落地的闭环,构建AI时代的学习生态,成为从业者的“认知加速器”。
1648 0
|
安全 搜索推荐 数据挖掘
淘宝API接口介绍:助你高效开展电商业务
淘宝API接口是连接淘宝平台与外部应用的桥梁,提供商品管理、订单处理、用户分析等多功能服务。它以丰富的数据资源、实时性和高安全性著称,支持电商平台搭建、商品推荐优化及市场分析等场景。未来,淘宝API将融合AI、大数据等技术,拓展生态合作,并强化安全合规性,为电商发展注入新动力。
|
机器学习/深度学习 人工智能 自然语言处理
什么是智能搜索
智能搜索融合了人工智能和大数据技术,提供高效的语义理解、多模态数据处理及个性化推荐。它不仅支持传统关键词匹配,还结合NLP、机器学习等先进技术,提升信息检索的精准度与多样性。适用于电商、内容平台、多媒体及企业内部知识库等多种场景,显著优化用户体验和业务效率。
2325 2
Hutool工具BeanUtil.copyProperties实现自定义类型转换器之字符串转时间格式化
hutool工具BeanUtil.copyProperties在字符串转LocalDateTime时默认用的格式为yyyy-MM-ddTHH:mm:ss,所以需要自定义转换器才行,在转换时会优先使用自定义的。 在项目启动时执行一次此段代码即可。
1107 0
|
机器学习/深度学习 自然语言处理 小程序
MiniMax开源超长文本处理神器,魔搭社区助力开发者推理部署
Transfermor架构与生俱来的二次计算复杂度,及其所带来的上下文窗口瓶颈,一直为业界所关注。此前,MiniMax开源了MiniMax-01系列模型,采用创新的线性注意力架构,使得模型能够在100万个token长度的上下文窗口上进行预训练;而在推理时,实现了高效处理全球最长400万token的上下文,是目前最长上下文窗口的20倍。
1215 0
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
缓存 算法 安全
被追着问UUID和自增ID做主键哪个好,为什么?
讨论了UUID和自增ID作为数据库主键的优缺点。UUID全局唯一,适合分布式系统,但存储空间大,不适合范围查询。自增ID存储空间节省,查询效率高,但分库分表困难,可预测性高。UUID版本包括基于时间戳(V1)、随机数(V4)以及基于名称空间的MD5(V3)和SHA1(V5)散列。
2028 1
被追着问UUID和自增ID做主键哪个好,为什么?