千家信息网

Mysql如何解决死锁问题

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Mysql如何解决死锁问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Mysql如何解决死锁问题"这篇文章吧。show eng
千家信息网最后更新 2026年11月01日Mysql如何解决死锁问题

这篇文章主要为大家展示了"Mysql如何解决死锁问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Mysql如何解决死锁问题"这篇文章吧。

show engine innodb status\G

  1. *** (1) TRANSACTION:

  2. TRANSACTION 8631FDC, ACTIVE 0 sec inserting

  3. mysql tables in use 2, locked 2

  4. LOCK WAIT 7 lock struct(s), heap size 1248, 107 row lock(s)

  5. MySQL thread id 28162, OS thread handle 0x7f4ab3073700, query id 210340529 tc-demo-dev3.dfengg.com 172.16.2.173 root

  6. INSERT INTO Text****(BusinessId,Type,Template,CreatedUserId,LastModifiedUserId,Delivery,DeliveryWindow,BusinessCalendar) SELECT 124001698, 205, '[CustomerFirstName], your next appointment with [Business] is [AppointmentDateTime]. We look forward to seeing you at your upcoming appointment.', 0, 0, IFNULL(96, Delivery),DeliveryWindow,BusinessCalendar FROM Text**** WHERE BusinessId=0 AND Type=205

  7. *** (1) WAITING FOR THIS LOCK TO BE GRANTED:

  8. RECORD LOCKS space id 794567 page no 6 n bits 88 index `PRIMARY` of table `df1`.`Text****` trx id 8631FDC lock_mode X insert intention waiting

  9. Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0

  10. 0: len 8; hex 73757072656d756d; asc supremum;;

  11. *** (2) TRANSACTION:

  12. TRANSACTION 8631FDB, ACTIVE 0 sec setting auto-inc lock

  13. mysql tables in use 2, locked 2

  14. 5 lock struct(s), heap size 1248, 106 row lock(s)

  15. MySQL thread id 28158, OS thread handle 0x7f4a48cd0700, query id 210340528 tc-demo-dev3.dfengg.com 172.16.2.173 root

  16. INSERT INTO Text****(BusinessId,Type,Template,CreatedUserId,LastModifiedUserId,Delivery,DeliveryWindow,BusinessCalendar) SELECT 124001699, 406, 'Dear [CustomerFirstName],\n\nYou have an upcoming appointment with [BusinessName]. Please take a minute to review the details of your appointment scheduled for:\n\n[AppointmentDateTime]\n\nIf you are unable to make this appointment, it is important that you call us at [BusinessPhone] as soon as possible so we can make other arrangements.\n\nWe look forward to seeing you at your upcoming appointment.\n\nSincerely,\n\n[BusinessName]\n[BusinessPhone]\n[BusinessEmail]\n[BusinessWebsite]\n\n-----\nThis email provided by Demandforce, Inc. To unsubscribe, please click this link:\n\n[UnsubscribeLink]\n\n', 0, 0, IFNULL(504, Delivery),DeliveryWindow,BusinessCalendar FROM Text**** WHERE BusinessId=0 AND Type=406

  17. *** (2) HOLDS THE LOCK(S):

  18. RECORD LOCKS space id 794567 page no 6 n bits 88 index `PRIMARY` of table `df1`.`Text****` trx id 8631FDB lock mode S

  19. Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0

  20. .................................

  21. *** (2) WAITING FOR THIS LOCK TO BE GRANTED:

  22. TABLE LOCK table `df1`.`Text****` trx id 8631FDB lock mode AUTO-INC waiting

  23. *** WE ROLL BACK TRANSACTION (2)

分析:

1)insert .... select ...语句,在MYSQL里,会对select ...涉及的所有记录进行锁定,这是特殊的select加X锁的情况,原因是为保证数据的一致性(M-S环境),假设不锁定,在执行过程中,select 包含的表一直在做插入操作,那么M端select出来的记录数就会比S端少,数据就会不一致。 2)查看select的执行计划 点击(此处)折叠或打开

  1. mysql> explain SELECT 124001698, 205, '[CustomerFirstName], your next appointment with [Business] is [AppointmentDateTime]. We look forward to seeing you at your upcoming appointment.', 0, 0, IFNULL(96, Delivery),DeliveryWindow,BusinessCalendar FROM Text**** WHERE BusinessId=0 AND Type=205;

  2. +----+-------------+---------------------+------+---------------+------+---------+------+------+-------------+

  3. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

  4. +----+-------------+---------------------+------+---------------+------+---------+------+------+-------------+

  5. | 1 | SIMPLE | Text**** | ALL | NULL | NULL | NULL | NULL | 6108 | Using where |

  6. +----+-------------+---------------------+------+---------------+------+---------+------+------+-------------+

  7. 1 row in set (0.00 sec)

key=null,rows=6108 全表扫描,没有可用的索引。 解决办法: 在BusinessId,Type字段建复合索引。 通过索引1)可以更快的定位数据2)锁定更少的行。

以上是"Mysql如何解决死锁问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

问题 死锁 内容 数据 篇文章 索引 一致 学习 帮助 特殊 一致性 办法 原因 字段 情况 易懂 更多 更快 条理 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司华为 科技互联网公司装修 盈实互联网科技 广州互联网科技公司 上海互联网科技有限公司 互联网科技ppt模板 赫美联合互联网科技 广州慧亚互联网科技怎么样 南平创想时代互联网科技有限公司 苏州铭阳互联网科技有限公司 允成互联网科技有限公司融资 迪庆互联网科技招生 乌鲁木齐新华智原互联网科技学校 长沙互联网科技 伍佰万互联网科技怎么赚钱 厦门江牛科技互联网 互联网金融运营模式中的金融科技 北京军民互联网科技公司 山东蛋芒互联网科技有限公司 互联网金融金融科技 河南真二互联网科技有限公司 互联网科技有限公司图片 互联网与科技金融数据 科技互联网创业计划书 互联网科技股有哪些 金融科技和互联网金融 天速互联网络科技有限公司 平安好医生打造互联网科技医疗 互联网企业和网络科技有限公司 前海云享互联网科技
0