MySQL会话锁等候联系原理ITeye - 牛牛娱乐

MySQL会话锁等候联系原理ITeye

2019-01-11 00:26:17 | 作者: 鹏海 | 标签: 会话,联系,等候 | 浏览: 2900

会话依靠联系首要需求理解锁等候相关四张表的联系。

首要逻辑是:先查询当时会话持有哪些业务的锁和依靠哪些业务的锁,经过这两种锁就能够得到一种图联系。

 

一:查询当时会话持有的锁:

 

  1. 查询当时会话processlist.id

  2. processlist.id对应innodb_trx表中的TRX_MYSQL_THREAD_ID,这样就能够查询到当时会话的业务id

  3. 到lock_waits中查询blocking_trx_id 为当时会话的业务id,这样就获得了当时会话的持有lock_id

  4. 依据lock_id到innodb_lock能够查询出当时会话持有锁信息。

 

  其实假如只需求查询会话的依靠的联系不需求知道锁信息的话,到第三步就能够了,经过第三步的REQUESTING_TRX_ID来反查innodb_trx表获取trx_id,反查processlist表就能够得到被当时会话堵塞的会话列表。

 

二:查询当时会话正等候的锁

 

 1. 查询当时会话processlist.id 

 2. processlist.id对应innodb_trx表中的TRX_MYSQL_THREAD_ID,这样就能够查询到当时会话的业务id

 3. 到lock_waits中查询REQUESTING_TRX_ID为当时会话的业务id,这样就获得了当时会话的正等候lock_id

 4. 依据lock_id到innodb_lock能够查询出当时会话正在等候的锁信息。

 

 相同,其实假如只需求查询会话的依靠的联系不需求知道锁信息的话,到第三步就能够了,经过第三步的blocking_trx_id来反查innodb_trx表获取trx_id,反查processlist表就能够得到被当时会话等候的锁被哪些会话占用了。

 

 

下面列出相关表部分表结构:

1.INFORMATION_SCHEMA.PROCESSLIST 

 

The  table provides information about which threads are running.

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章