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中已…...
颠覆传统游戏体验:Sunshine云游戏串流平台让你随时随地畅玩PC游戏
颠覆传统游戏体验:Sunshine云游戏串流平台让你随时随地畅玩PC游戏 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾梦想过在旅途中用平板继续昨晚未完成的3A大作…...
Axure 9.0 原生组件:绘制折线图
引言在原型设计中,数据可视化是传递核心信息的关键手段,而折线图凭借 “清晰展示数据趋势” 的优势,广泛应用于销售波动、用户增长、指标变化等场景。Axure 9.0 作为主流原型工具,虽未内置现成折线图组件,但通过「形状…...
深度探索:开源工具OpenCore Legacy Patcher技术揭秘与完整指南
深度探索:开源工具OpenCore Legacy Patcher技术揭秘与完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果系统持续演进,…...
拯救你的Flash回忆:CefFlashBrowser让经典内容重获新生
拯救你的Flash回忆:CefFlashBrowser让经典内容重获新生 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否曾经因为现代浏览器不再支持Flash而无法重温那些经典的教学课件&…...
Qwen3-14B镜像轻量化设计:50GB系统盘+40GB数据盘高效空间管理
Qwen3-14B镜像轻量化设计:50GB系统盘40GB数据盘高效空间管理 1. 镜像概述与核心优势 Qwen3-14B私有部署镜像是一款专为RTX 4090D 24GB显存显卡优化的轻量化解决方案。通过精心设计的50GB系统盘40GB数据盘架构,实现了大模型部署的空间效率最大化。这个镜…...
告别复杂配置:Ostrakon-VL-8B零售多模态模型一键部署实战
告别复杂配置:Ostrakon-VL-8B零售多模态模型一键部署实战 1. 为什么选择Ostrakon-VL-8B? 零售行业每天需要处理大量商品图片、货架陈列和顾客反馈,传统的人工分析方式效率低下且成本高昂。Ostrakon-VL-8B作为专为零售场景优化的多模态大模型…...
Deepseek 1.5B vs 14B实测:游戏本跑大模型选哪个?吞吐量/显存占用/响应速度全对比
Deepseek 1.5B与14B模型实战评测:游戏本部署大语言模型的黄金分割点 当游戏本遇上大语言模型,性能与显存的博弈便成为开发者最头疼的问题。去年还在为能否跑通7B模型发愁的硬件环境,如今已经能流畅运行14B参数规模的模型——这背后是量化技术…...
Yi-Coder-1.5B代码生成实战:快速搭建本地AI编程助手
Yi-Coder-1.5B代码生成实战:快速搭建本地AI编程助手 1. 引言:你的私人编程助手,本地就能跑 还在为写重复的样板代码而烦恼吗?或者面对一个新框架的API文档,不知道从何下手?如果你是一名开发者,…...
Sqitch 实战教程:如何在 PostgreSQL 中管理数据库变更
Sqitch 实战教程:如何在 PostgreSQL 中管理数据库变更 【免费下载链接】sqitch Sensible database change management 项目地址: https://gitcode.com/gh_mirrors/sq/sqitch Sqitch 是一款功能强大的数据库变更管理工具,专为 PostgreSQL 等数据库…...
第二章 从ROM到app_main:深入剖析ESP32 FreeRTOS双核启动的代码级实现
1. ESP32双核启动全景图:从硬件复位到RTOS就绪 第一次拿到ESP32开发板时,你可能和我一样好奇:按下复位键后,这个小小的芯片内部究竟发生了什么?为什么我们的app_main函数能自动运行?今天我们就用"显微…...
