千家信息网

Mysql如何解决死锁问题

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"Mysql如何解决死锁问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Mysql如何解决死锁问题"这篇文章吧。show eng
千家信息网最后更新 2025年01月20日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安全错误 数据库的锁怎样保障安全 jsp把图片存入数据库 网络安全法什么时候发布的 长春软件开发制作公司 数据库插入语句与约束发生冲突 gpu服务器上的显卡 服务器电源显示叹号怎么取消 戴尔服务器t430 数据库新技术实验 海淀区信息化网络技术服务优点 .net数据库增删改查 游戏软件开发培训年龄限制 网络技术是如何诞生的 软件开发受计算机系统限制吗 sql数据库的权限设置 db2数据库占多少位字符 软件开发区视频直播 新吴区软件开发服务电话 电力公司数据库崩溃 微信腾讯公司服务器保存资料吗 开票软件黑盘的服务器地址 如何读取服务器主机硬盘得数据 湖北软件开发收费报价表 2018年数据库技术大会 聊天软件开发的技术研发水平 数据库表设计字段数量 代理服务器密码分享 蘑菇插件应用程序服务器错误 activiti适配金仓数据库 用病毒营销宣传软件开发 淮安串口终端服务器
0