zoukankan      html  css  js  c++  java
  • innodb_trx, innodb_locks, innodb_lock_waits

    如果两个事务出现相互等待,则会导致死锁,MySQL的innodb_lock_wait_timeout参数设置了等待的时间限制,超时则抛异常。

    select @@innodb_lock_wait_timeout;
    set @@innodb_lock_wait_timeout=60;

    参数innodb_rollback_on_timeout表示:超时的事务是否进行回滚,默认为off,表示不回滚。该变量在启动后不可修改。

    information_schema数据库中有3张临时表描述事务之间的等待关系:

    innodb_trx 事务

    innodb_locks 锁

    innodb_lock_waits 事务之间的等待关系

      innodb_lock_waits表中字段如下:

      requesting_trx_id 请求锁的事务

      requested_lock_id 请求的锁的id。请求的锁可能是S锁

      blocking_trx_id 占有锁的事务

      blocking_lock_id 占有的锁的id。占有的锁可能是X锁

    下面的sql语句查询事务之间的等待关系:

    select r.trx_id waiting_trx_id,
           r.trx_mysql_thread_id waiting_thread, 
           r.trx_query waiting_query,
           b.trx_id blocking_trx_id, 
           b.trx_mysql_thread_id blocking_thread, 
           b.trx_query blocking_query 
    from innodb_lock_waits w
    inner join innodb_trx r on w.requesting_trx_id=r.trx_id
    inner join innodb_trx b on w.blocking_trx_id=b.trx_id
  • 相关阅读:
    设计模式-观察者模式
    idea 生成 protobuf
    springboot @Autowride 注入空 调用时报Null空指针
    Netty 服务端创建过程
    git failed to push some refs to
    SPI simp
    Controller之statefulset
    Service
    Controller之deployment
    rabbitmq“ Login was refused using authentication mechanism PLAIN”
  • 原文地址:https://www.cnblogs.com/allenwas3/p/8371225.html
Copyright © 2011-2022 走看看