千家信息网

Mysql如何解决死锁问题

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,这篇文章主要为大家展示了"Mysql如何解决死锁问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Mysql如何解决死锁问题"这篇文章吧。show eng
千家信息网最后更新 2024年11月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安全错误 数据库的锁怎样保障安全 数据库换码字符转义字符 网络安全蓝军主要工作 淮北直播平台软件开发要多少钱 主流软件开发流程 2021年网络安全知识竞答截图 网络安全伦理道德和法治教育 广电网络安全播出总结 亚马逊网站免费服务器 反诈骗网络安全主题班会 好用的碟式套利软件开发 数据库用那种好 数据库视图不删会显示吗 互联网与网络技术是干什么的 地区网络安全创新 成都软件开发制作的公司 学网络安全读博好吗 如何获取数据库中最大数值 数据库查询ID是否重复 选修3网络技术应用会考 赵凤伟网络安全讲师 枣庄网络安全和信息化办公室招聘 cs服务器远程管理软件 数据库设计 资料核查 华为集团财经 软件开发工程师 服务器机房放在顶楼 甘肃服务器机房空调哪个牌子好 起点无法订阅网络安全 我想学软件开发可以不 软件开发软件app学习班 网络安全核心技术前景
0