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中已…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
