我的日常

登录/注册
您现在的位置:论坛 资料库 数据库开发 > Lock wait timeout exceeded; try restarting transacti ...
总共48087条微博

动态微博

查看: 1663|回复: 0

Lock wait timeout exceeded; try restarting transaction

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-10-09 14:21:18 |只看该作者 |倒序浏览
    问题描述:在mysql的gameshop数据库上操作删除语句,数据库一直在执行,响应完后,报Lock wait timeout exceeded;try restarting transaction; 执行delete语句删除失败。

    原因:有会话执行过DML操作,然后没commit提交,再执行删除操作,就锁了。
    __________________________________________________________________________
    Lock wait timeout exceeded; try restarting transaction一些信息

    1、锁等待超时。是当前事务在等待其它事务释放锁资源造成的。可以找出锁资源竞争的表和语句,优化你的SQL,创建索引等,如果还是不行,可以适当减少并发线程数。

    2、你的事务在等待给某个表加锁时超时了,估计是表正被另的进程锁住一直没有释放。
    可以用 SHOW INNODB STATUS/G; 看一下锁的情况。

    3、搜索解决 之道
    在管理 节点的[ndbd default]
    区加:
    TransactionDeadLockDetectionTimeOut=10000(设置 为10秒)默认是1200(1.2秒)

    4、

    InnoDB会自动的检测死锁进行回滚,或者终止死锁的情况。


    引用
    InnoDB automatically detects transaction deadlocks and rolls back a transaction or transactions to break the deadlock. InnoDB tries to pick small transactions to roll back, where the size of a transaction is determined by the number of rows inserted, updated, or deleted.

    如果参数innodb_table_locks=1并且autocommit=0时,InnoDB会留意表的死锁,和MySQL层面的行级锁。另外,InnoDB不会检测MySQL的Lock Tables命令和其他存储引擎死锁。
    你应该设置innodb_lock_wait_timeout来解决这种情况。
    innodb_lock_wait_timeout是Innodb放弃行级锁的超时时间。


    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

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

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表