MySQL使用information_schema获取锁表信息

information_schema

Version >= 5.1

  1. SELECT  
  2.     r.trx_id waiting_trx_id,  
  3.     r.trx_mysql_thread_id waiting_thread,  
  4.     TIMESTAMPDIFF(  
  5.         SECOND,  
  6.         r.trx_wait_started,  
  7.         CURRENT_TIMESTAMP  
  8.     ) wait_time,  
  9.     r.trx_query waiting_query,  
  10.     l.lock_table waiting_table_lock,  
  11.     b.trx_id blocking_trx_id,  
  12.     b.trx_mysql_thread_id blocking_thread,  
  13.     SUBSTRING(  
  14.         p. HOST,  
  15.         1,  
  16.         INSTR(p. HOST, ':') - 1  
  17.     ) blocking_host,  
  18.     SUBSTRING(p. HOST, INSTR(p. HOST, ':') + 1) blocking_port,  
  19.   
  20. IF (p.COMMAND = 'Sleep', p.TIME, 0) idel_in_trx,  
  21.  b.trx_query blocking_query  
  22. FROM  
  23.     information_schema.INNODB_LOCK_WAITS w  
  24. INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id  
  25. INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id  
  26. INNER JOIN information_schema.INNODB_LOCKS l ON w.requested_lock_id = l.lock_id  
  27. LEFT JOIN information_schema. PROCESSLIST p ON p.ID = b.trx_mysql_thread_id  
  28. ORDER BY  
  29.     wait_time DESC;  

你可能感兴趣的:(数据库)