MYSQL 真实高并发下的死锁
https://pan.baidu.com/s/1nM3VQdbkNZhnK-wWboEYxA?pwd=vwu6
下面是风控更新语句
------------------------
LATEST DETECTED DEADLOCK
------------------------
2023-08-04 01:00:10 140188779017984
*** (1) TRANSACTION:
TRANSACTION 895271870, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1128, 2 row lock(s), undo log entries 1
MySQL thread id 1066127, OS thread handle 140189153339136, query id 470904886 172.16.51.14 sharkdb_app updating
//使用4个锁结构,占用1128字节,2个行锁,UNDO日志1个实例.update risk_control_collect_summary
SET sum_success_order_number = sum_success_order_number + 1,sum_success_order_fee = sum_success_order_fee + 0.00,sum_success_order_amount = sum_success_order_amount + 10000.00,update_time = now(), normal_amount_count = normal_amount_count + 1
where merchant_no = '010449'and batch_date = '2023-08-04 00:00:00'*** (1) HOLDS THE LOCK(S)://持有锁 3658表空间,第16页好,第112位,主键索引上,共享S REC记录锁
RECORD LOCKS space id 3658 page no 16 n bits 112 index PRIMARY of table `sharkdb`.`risk_control_collect_summary` trx id 895271870 lock mode S locks rec but not gap
Record lock, heap no 43 PHYSICAL RECORD: n_fields 24; compact format; info bits 0
//0 是主键ID,1是事务ID,2 是UNDO地址 3是字段0: len 6; hex 303130343439; asc 010449;;1: len 5; hex 99b0c80000; asc ;;2: len 6; hex 0000355cc3bc; asc 5\ ;;3: len 7; hex 82000001400146; asc @ F;;4: len 4; hex 35383135; asc 5815;;5: len 25; hex 50542e20476c6f62616c2047616d6520496e7465726e757361; asc PT. Global Game Internusa;;6: len 4; hex 80000000; asc ;;7: len 14; hex 8000000000000000000000000000; asc ;;8: len 14; hex 8000000000000000000000000000; asc ;;9: len 9; hex 800000000000000000; asc ;;10: len 9; hex 800000000000000000; asc ;;11: len 9; hex 800000000000000000; asc ;;12: len 4; hex 80000001; asc ;;13: len 14; hex 8000000000000000000000000000; asc ;;14: len 14; hex 800000000000000000000aae6000; asc ` ;;15: len 9; hex 800000000000000000; asc ;;16: len 9; hex 800000000000000000; asc ;;17: len 9; hex 800000000000000000; asc ;;18: len 5; hex 99b0c8000a; asc ;;19: len 5; hex 99b0c8000a; asc ;;20: len 4; hex 80000000; asc ;;21: len 4; hex 80000000; asc ;;22: len 4; hex 80000000; asc ;;23: len 4; hex 80000001; asc ;;*** (1) WAITING FOR THIS LOCK TO BE GRANTED: //等待 主键索引 X REC锁
RECORD LOCKS space id 3658 page no 16 n bits 112 index PRIMARY of table `sharkdb`.`risk_control_collect_summary` trx id 895271870 lock_mode X locks rec but not gap waiting
Record lock, heap no 43 PHYSICAL RECORD: n_fields 24; compact format; info bits 00: len 6; hex 303130343439; asc 010449;;1: len 5; hex 99b0c80000; asc ;;2: len 6; hex 0000355cc3bc; asc 5\ ;;3: len 7; hex 82000001400146; asc @ F;;4: len 4; hex 35383135; asc 5815;;5: len 25; hex 50542e20476c6f62616c2047616d6520496e7465726e757361; asc PT. Global Game Internusa;;6: len 4; hex 80000000; asc ;;7: len 14; hex 8000000000000000000000000000; asc ;;8: len 14; hex 8000000000000000000000000000; asc ;;9: len 9; hex 800000000000000000; asc ;;10: len 9; hex 800000000000000000; asc ;;11: len 9; hex 800000000000000000; asc ;;12: len 4; hex 80000001; asc ;;13: len 14; hex 8000000000000000000000000000; asc ;;14: len 14; hex 800000000000000000000aae6000; asc ` ;;15: len 9; hex 800000000000000000; asc ;;16: len 9; hex 800000000000000000; asc ;;17: len 9; hex 800000000000000000; asc ;;18: len 5; hex 99b0c8000a; asc ;;19: len 5; hex 99b0c8000a; asc ;;20: len 4; hex 80000000; asc ;;21: len 4; hex 80000000; asc ;;22: len 4; hex 80000000; asc ;;23: len 4; hex 80000001; asc ;;*** (2) TRANSACTION:
TRANSACTION 895271869, ACTIVE 0 sec starting index read
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1128, 2 row lock(s), undo log entries 1
MySQL thread id 1066512, OS thread handle 140188740466432, query id 470904887 172.16.51.14 sharkdb_app updating
update risk_control_collect_summary
SET sum_success_order_number = sum_success_order_number + 1, sum_success_order_fee = sum_success_order_fee + 0.00, sum_success_order_amount = sum_success_order_amount + 100000.00, update_time = now(), normal_amount_count = normal_amount_count + 1
where merchant_no = '010449'and batch_date = '2023-08-04 00:00:00'*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 3658 page no 16 n bits 112 index PRIMARY of table `sharkdb`.`risk_control_collect_summary` trx id 895271869 lock mode S locks rec but not gap
Record lock, heap no 43 PHYSICAL RECORD: n_fields 24; compact format; info bits 00: len 6; hex 303130343439; asc 010449;;1: len 5; hex 99b0c80000; asc ;;2: len 6; hex 0000355cc3bc; asc 5\ ;;3: len 7; hex 82000001400146; asc @ F;;4: len 4; hex 35383135; asc 5815;;5: len 25; hex 50542e20476c6f62616c2047616d6520496e7465726e757361; asc PT. Global Game Internusa;;6: len 4; hex 80000000; asc ;;7: len 14; hex 8000000000000000000000000000; asc ;;8: len 14; hex 8000000000000000000000000000; asc ;;9: len 9; hex 800000000000000000; asc ;;10: len 9; hex 800000000000000000; asc ;;11: len 9; hex 800000000000000000; asc ;;12: len 4; hex 80000001; asc ;;13: len 14; hex 8000000000000000000000000000; asc ;;14: len 14; hex 800000000000000000000aae6000; asc ` ;;15: len 9; hex 800000000000000000; asc ;;16: len 9; hex 800000000000000000; asc ;;17: len 9; hex 800000000000000000; asc ;;18: len 5; hex 99b0c8000a; asc ;;19: len 5; hex 99b0c8000a; asc ;;20: len 4; hex 80000000; asc ;;21: len 4; hex 80000000; asc ;;22: len 4; hex 80000000; asc ;;23: len 4; hex 80000001; asc ;;*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 3658 page no 16 n bits 112 index PRIMARY of table `sharkdb`.`risk_control_collect_summary` trx id 895271869 lock_mode X locks rec but not gap waiting
Record lock, heap no 43 PHYSICAL RECORD: n_fields 24; compact format; info bits 00: len 6; hex 303130343439; asc 010449;;1: len 5; hex 99b0c80000; asc ;;2: len 6; hex 0000355cc3bc; asc 5\ ;;3: len 7; hex 82000001400146; asc @ F;;4: len 4; hex 35383135; asc 5815;;5: len 25; hex 50542e20476c6f62616c2047616d6520496e7465726e757361; asc PT. Global Game Internusa;;6: len 4; hex 80000000; asc ;;7: len 14; hex 8000000000000000000000000000; asc ;;8: len 14; hex 8000000000000000000000000000; asc ;;9: len 9; hex 800000000000000000; asc ;;10: len 9; hex 800000000000000000; asc ;;11: len 9; hex 800000000000000000; asc ;;12: len 4; hex 80000001; asc ;;13: len 14; hex 8000000000000000000000000000; asc ;;14: len 14; hex 800000000000000000000aae6000; asc ` ;;15: len 9; hex 800000000000000000; asc ;;16: len 9; hex 800000000000000000; asc ;;17: len 9; hex 800000000000000000; asc ;;18: len 5; hex 99b0c8000a; asc ;;19: len 5; hex 99b0c8000a; asc ;;20: len 4; hex 80000000; asc ;;21: len 4; hex 80000000; asc ;;22: len 4; hex 80000000; asc ;;23: len 4; hex 80000001; asc ;;*** WE ROLL BACK TRANSACTION (2)
发现事务1 和事务2 都是一样的SQL,而且更新的值也是一样的.与开发人员了解下,得知之所以相同,是该010499执行多笔一样的值更新.
高并发下 UPDATE A SET MONEY=MONEY+1 WHERE ID=001; 如果该语句,主要是该ID是一样的,会导致相互死锁. 一条更新语句需要对主键同时上S + X 也就是共享+排他锁.
有时候搞不懂为啥对主键索引要加S,然后再加X. 多此一举啊?
还搞不懂得的是,为啥两个事务,加锁顺序为什么不一样, 应该按先加S,然后再加X. 难道加不了S,就加X,再等加S.这不就是故意埋坑吗?
开发通过 REDIS分布式锁来解决.
虽然MYSQL 原理难以了解为啥.我加了丁奇大神的群细细学习里面的锁原理

相关文章:
MYSQL 真实高并发下的死锁
https://pan.baidu.com/s/1nM3VQdbkNZhnK-wWboEYxA?pwdvwu6 下面是风控更新语句 ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2023-08-04 01:00:10 140188779017984 *** (1) TRANSACTION: TRANSACTION 895271870, ACTIVE 0 sec starting …...
Zookeeper 简介 | 特点 | 数据存储
1、简介 zk就是一个分布式文件系统,不过存储数据的量极小。 1. zookeeper是一个为分布式应用程序提供的一个分布式开源协调服务框架。是Google的Chubby的一个开源实现,是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。 2. 提…...
设计模式之结构型模式---装饰器模式
目录 1.概述2.类图3.应用场景及优缺点3.1 应用场景3.2 优缺点3.2.1 优点3.2.2 缺点 4.实现4.1 案例类图4.2 代码实现4.2.1 定义抽象构建角色4.2.2 定义具体构建角色4.2.3 定义抽象装饰器角色4.2.4 定义具体装饰角色4.2.5 装饰器模式的使用 1.概述 装饰器模式是指在不改变现有对…...
Android Pair
Pair在Android中是一种轻量级的工具类,并不是严格意义上的数据结构。 数据结构是一组有组织的方式来存储和管理数据的方式,如数组、链表、栈、队列、树、图等,它们有自己的特性和操作规则。而Pair更像是一个简单的封装,用于在需要…...
华为荣耀曲面屏手机下面空白部分设置颜色的方法
荣耀部分机型下面有一块空白区域,如下图红框部分 设置这部分的颜色需要在themes.xml里面设置navigationBarColor属性 <item name"android:navigationBarColor">android:color/white</item>...
《C#语法一篇通》,有20万字,需8MB字节,宜48小时阅读,没准会继续完善
本文摘录了C#语法的主要内容,接近20万字。 所有鸡汤的味道都等于马尿! 如果你相信任何所谓的鸡汤文章,智商堪忧。 计算机语言没有”好不好“之说,骗子才会告诉你哪个语言好,学好任何一本基础语言(C&#…...
嵌入式硬件工程师的职业发展规划
嵌入式硬件工程师可以按照以下阶段进行职业发展规划: 1. **初级阶段(1-3 年) ** - **技术学习与积累**: **电路基础强化**: 深入学习模拟电路和数字电路知识,能够熟练分析和设计基本的电路,…...
QT for android 问题总结(QT 5.15.2)
1.配置好的sdk,显示设置失败 Android SDK Command-line Tools run. Android Platform-Tools installed. Command-line Tools (latest) 版本过高导致报错 ,下载一个低版本的latest ,替换掉之前latest中的文件。即可,latest 路径如…...
PyTorch实战-手写数字识别-MLP模型
1 需求 包懂,40分钟掌握PyTorch深度学习框架,对应神经网络算法理论逐行讲解用PyTorch实现图像分类代码_哔哩哔哩_bilibili 10分钟入门神经网络 PyTorch 手写数字识别_哔哩哔哩_bilibili pytorch tutorial: PyTorch 手写数字识别 教程代码 从零设计并训…...
(附项目源码)Java开发语言,基于Java的高校实验室教学管理系统的设计与开发 50,计算机毕设程序开发+文案(LW+PPT)
摘 要 随着高校实验室教学与管理的复杂性增加,传统的手动管理系统已经无法满足日益增长的需求。实验室教学不仅涉及到学生的教学安排和管理,还需要对实验设备、实验材料、实验室资源等进行有效的调配和管理。而目前实验室教学管理的各项工作,…...
【日常问题排查小技巧-连载】
线上服务CPU飙高排查 先执行 top,找到CPU占用比较高的进程 id,(比如 21448) jstack 进程 id > show.txt(jstack 21448 > show.txt) 找到进程中CPU占用比较高的线程,线程 id 转换为 16 进…...
elastic search查找字段的方法
一,比如:elastic search 查找id为“ien9292voewew”的方法 此id为主键id,意思就是唯一id,在ES中是_id, 在 Elasticsearch 中,如果你想要查找特定 ID 的文档,可以使用 _get API。以下是如何通过 RESTful 请求或使用 Python 客户端来查找 ID 为 ien9292voewew 的文档的方…...
MATLAB下的四个模型的IMM例程(CV、CT左转、CT右转、CA四个模型),附下载链接
基于IMM算法的目标跟踪。利用卡尔曼滤波和多模型融合技术,能够在含噪声的环境中提高估计精度,带图像输出 文章目录 概述源代码运行结果代码结构与功能1. 初始化2. 仿真参数设置3. 模型参数设置4. 生成量测数据5. IMM算法初始化6. IMM迭代7. 绘图8. 辅助函…...
无人机之中继通信技术篇
一、定义与原理 无人机中继通信技术是指通过无人机搭载中继设备,将信号从一个地点传输到另一个地点,从而延长通信距离并保持较好的通信质量。其原理类似于传统的中继通信,即在两个终端站之间设置若干中继站,中继站将前站送来的信号…...
阳光保险隐忧浮现:业绩与股价双双而下,张维功能否力挽狂澜?
10月28日晚间,作为国内新生代险企,也是一家赴港上市的保险集团——阳光保险(HK:06963)一口气对外正式披露了三则财务报告,分别是集团旗下阳光人寿和阳光财险今年前三季度未经审议的财务数据,以及截至三季度…...
【OJ题解】在字符串中查找第一个不重复字符的索引
💵个人主页: 起名字真南 💵个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 目录 1. 引言2. 题目分析示例: 3. 解题思路思路一:双重循环思路二:哈希表 4. C代码实现5. 代码详解6. 时间和空间复杂度分析7. 优化方…...
处理配对和拆分内容 |【python技能树知识点1~2 习题分析】
目录 一、编程语言简史(配对)题目要求:程序设计: 二、 编程语言发明家(拆分)题目要求程序实现while和for循环 python技能树知识点中的一些习题练习和分析。熟悉python编程模式和逻辑。 一、编程语言简史&am…...
HBuilderX自定义Vue3页面模版
HBuilderX自定义Vue3页面模版 首先在HBuilderX工具下的任意一个项目添加新建自定义页面模版 新建模版文件,并打开进行编辑 vue3-setup-js.vue文件里填写样式模版(根据自己的需要进行修改) <template><view class"">&…...
计算机网络——TCP中的流量控制和拥塞控制
TCP中的流量控制和拥塞控制 流量控制 什么是流量控制 如果发送者发送数据过快,接收者来不及接收,那么就会出现分组丢失,为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。 …...
BFV/BGV全同态加密方案浅析
本文主要为翻译内容,原文地址:Introduction to the BFV encryption scheme、https://www.inferati.com/blog/fhe-schemes-bgv 之前的一篇博客我们翻译了CKKS全同态加密方案的内容,但该篇上下文中有一些知识要点,作者在BFV/BGV中已…...
解锁Claude无限潜能:技能生态系统的构建艺术
解锁Claude无限潜能:技能生态系统的构建艺术 【免费下载链接】awesome-claude-skills A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-claude-s…...
TradingAgents-CN智能交易系统:3种部署方案让你5分钟开启AI投资分析
TradingAgents-CN智能交易系统:3种部署方案让你5分钟开启AI投资分析 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 还在为复杂的金融…...
foobar2000界面美化终极指南:3步打造你的专属音乐播放器
foobar2000界面美化终极指南:3步打造你的专属音乐播放器 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 还在为foobar2000那套单调乏味的默认界面感到困扰吗?今天我要为你介绍…...
乙巳马年·皇城大门春联生成终端W安全部署实践:网络配置与访问控制
乙巳马年皇城大门春联生成终端W安全部署实践:网络配置与访问控制 最近在星图GPU平台上部署了一个挺有意思的AI应用,叫“皇城大门春联生成终端W”。说白了,就是一个能根据你的要求,自动生成各种风格春联的AI模型。部署过程本身不难…...
如何让foobar2000界面脱胎换骨?3大设计理念打造个性化音乐体验
如何让foobar2000界面脱胎换骨?3大设计理念打造个性化音乐体验 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 副标题:从安装到定制:零基础也能掌握的foobox-cn美化…...
TEdit终极指南:如何用免费地图编辑器10倍提升泰拉瑞亚创作效率
TEdit终极指南:如何用免费地图编辑器10倍提升泰拉瑞亚创作效率 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also let…...
Qwen3.5-2B部署实战:端侧轻量化多模态模型一键镜像教程
Qwen3.5-2B部署实战:端侧轻量化多模态模型一键镜像教程 1. 模型简介 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。这个模型专为低功耗、低门槛部署场景设计,特别适合端侧…...
水墨江南模型效果对比:不同参数下的笔触与渲染风格
水墨江南模型效果对比:不同参数下的笔触与渲染风格 最近在尝试用AI生成水墨画,发现一个挺有意思的现象:同一个“水墨江南”模型,用不同的参数设置,画出来的效果天差地别。有时候是寥寥几笔的写意小品,有时…...
nli-distilroberta-base参数解析与调优指南:关键配置项详解
nli-distilroberta-base参数解析与调优指南:关键配置项详解 1. 引言 如果你正在使用nli-distilroberta-base模型进行自然语言推理任务,可能会遇到这样的困惑:为什么同样的模型在不同机器上运行速度差异这么大?为什么有时候推理结…...
Bootstrap4 导航栏详解
Bootstrap4 导航栏详解 引言 Bootstrap 是一个流行的前端框架,它为开发者提供了丰富的组件和工具,以快速构建响应式、移动优先的网站和应用程序。导航栏是网站的重要组成部分,它能够帮助用户轻松地在网站的不同页面之间导航。Bootstrap4 提供…...
