• 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
  • 相关阅读:
    fetch
    创建Vue实例传入的option
    Text and Binary modes
    daemon_int
    http 协议 c++代码 获取网页
    asp.net mvc 5 初体验
    win32 音视频相关 api
    setuid和seteuid
    用0x077CB531计算末尾0的个数
    webservice gsoap 小记
  • 原文地址:https://www.cnblogs.com/allenwas3/p/8371225.html
Copyright © 2020-2023  润新知