Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 824|回复: 0

mysql update运行超时解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-5-9 01:51:02 | 显示全部楼层 |阅读模式

    问题描述:

      今天update(修改)mysql数据库中一张表时,发现时间很长,而且会失败。报错:Error Code: 1205. Lock wait timeout exceeded; try restarting transaction

    解决方案:

    # 查看事务表

    select * from information_schema.innodb_trx
    

      在结果中发现trx_mysql_thread_id 有值 xxxx (数字)

    # 运行

    show processlist
    

      结果中会有一条与xxxx(数字)对映的数据

    # 在sql中执行

    kill xxxx
    

    原因分析:

    mysql的innoDB存储引擎是支持事务的,事务开启后没有被主动commit。导致该资源被长期占用,其他事务在抢占该资源时,因上一个事务的锁而导致抢占失败!因此出现Lock wait timeout exceeded 

    MySQL  5.5  innodb_lock_wait 锁等待:

    在mysql  5.5 中,information_schema  库中增加了三个关于锁的表(MEMORY引擎);

    innodb_trx  ##  当前运行的所有事物

    innodb_locks ##  当前出现的锁

    innodb_lock_waits  ##锁等待的对应关系

    对应表的结构:

    参考文章一:https://blog.csdn.net/wyyl1/article/details/80517139

    参考文章二:http://blog.sina.com.cn/s/blog_6bb63c9e0100s7cb.html

    参考文章三:https://my.oschina.net/quanzhong/blog/222091

     

    如有更详细的资料,望帅哥美女,CV分享

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-15 11:16 , Processed in 0.058891 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表