zoukankan      html  css  js  c++  java
  • mysql死锁,等待资源,事务锁,Lock wait timeout exceeded; try restarting transaction解决

    前面已经了解了InnoDB关于在出现锁等待的时候,会根据参数innodb_lock_wait_timeout的配置,判断是否需要进行timeout的操作,本文档介绍在出现锁等待时候的查看及分析处理;

    在InnoDB Plugin之前,一般通过show full processlist(很难发现被锁的行记录问题所在)和show engine innodb status命令查看当前的数据库请求,然后再判断当前事务中锁的情况。随着mysql的发展,已经提供更加便捷的方法来监控数据库中的锁等待现象了。

    在information_schema下面有三张表:INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS(解决问题方法),通过这三张表,可以更简单地监控当前的事务并分析可能存在的问题。

    比较常用的列:

    trx_id:InnoDB存储引擎内部唯一的事物ID
    trx_status:当前事务的状态
    trx_status:事务的开始时间
    trx_requested_lock_id:等待事务的锁ID
    trx_wait_started:事务等待的开始时间
    trx_weight:事务的权重,反应一个事务修改和锁定的行数,当发现死锁需要回滚时,权重越小的值被回滚
    trx_mysql_thread_id:MySQL中的进程ID,与show processlist中的ID值相对应
    trx_query:事务运行的SQL语句

    kill 进程ID;  工作中遇到了一条车辆记录,select * from car for update 或者是修改某个字段的值,就报错:Lock wait timeout exceeded; try restarting transaction解决方法,另外从根本上从业务逻辑代码优化对数据库的操作,之前也遇到过此类情况,比如刚刚修改完这条记录,接着再次修改,也会报此错误,从代码和业务层面尽量避免开来。

  • 相关阅读:
    对Java总体上的认识
    HTML+CSS学习情况
    读过的书籍
    FSCapture[个人认为最好的截图工具]
    会使用的软件
    深入理解Java中的引用的含义与原理
    从头开始学JavaScript (三)——数据类型
    从头开始学JavaScript (二)——变量及其作用域
    从头开始学JavaScript(一)——基础中的基础
    【Head First Javascript】学习笔记0——自己制作chm参考手册素材
  • 原文地址:https://www.cnblogs.com/simpledev/p/5426705.html
Copyright © 2011-2022 走看看