1. 程式人生 > >MySQL使用information_schema獲取鎖表資訊

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. IF (p.COMMAND = 'Sleep', p.TIME, 0) idel_in_trx,  
  20.  b.trx_query blocking_query  
  21. FROM
  22.     information_schema.INNODB_LOCK_WAITS w  
  23. INNERJOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id  
  24. INNERJOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id  
  25. INNERJOIN information_schema.INNODB_LOCKS l ON w.requested_lock_id = l.lock_id  
  26. LEFTJOIN information_schema. PROCESSLIST p 
    ON p.ID = b.trx_mysql_thread_id  
  27. ORDERBY
  28.     wait_time DESC;