MySQL 鎖表與解鎖步驟

-- 1.使用大於0表
SHOW OPEN TABLES WHERE `Database` = 'test' AND In_use > 0 ;
-- 2.request_trx_id請求鎖 與 blocking_trx_id產生鎖原因
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

SELECT trx_id,trx_mysql_thread_id  FROM information_schema.innodb_trx ;

-- 3.被鎖語句id
    SELECT 
      NOW(),
      (
        UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(a.trx_started)
      ) diff_sec,
      b.id,-- 被鎖語句id
      b.user,
      b.host,
      b.db,
      c.lock_type,
      c.lock_table,
      c.lock_index 
    FROM
      information_schema.innodb_trx a 
      INNER JOIN information_schema.PROCESSLIST b 
        ON a.TRX_MYSQL_THREAD_ID = b.id 
      INNER JOIN information_schema.INNODB_LOCKS c 
        ON a.trx_requested_lock_id = c.lock_id ;
        
-- 4.查看正在鎖的事務,表名,鎖狀態
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 
-- 5.查看id對應的SQL
SHOW FULL PROCESSLIST;

SELECT b.processlist_id,a.thread_id,a.sql_text FROM 
performance_schema.events_statements_current a, performance_schema.threads b 
WHERE a.thread_id=b.thread_id

-- 6.殺掉進程
KILL ??


-- 一步到位

SELECT * FROM sys.`innodb_lock_waits`;

SELECT 
  b.`trx_mysql_thread_id` 被鎖id,
  (SELECT 
    a.sql_text 
  FROM
    performance_schema.events_statements_current a,
    performance_schema.threads b 
  WHERE a.thread_id = b.thread_id 
    AND b.processlist_id = b.`trx_mysql_thread_id`) 被鎖SQL,
  d.`lock_table` 被鎖表,
  c.`trx_mysql_thread_id` 鎖表id, -- 殺掉 kill ??
  (SELECT 
    a.sql_text 
  FROM
    performance_schema.events_statements_current a,
    performance_schema.threads b 
  WHERE a.thread_id = b.thread_id 
    AND b.processlist_id = c.`trx_mysql_thread_id`) 鎖表SQL,
    e.`lock_table` 鎖表
FROM
  INFORMATION_SCHEMA.INNODB_LOCK_WAITS a 
  LEFT JOIN information_schema.innodb_trx b 
    ON a.`requesting_trx_id` = b.`trx_id` 
  LEFT JOIN information_schema.innodb_trx c 
    ON a.`blocking_trx_id` = c.`trx_id` 
  LEFT JOIN information_schema.INNODB_LOCKS d 
    ON a.`requesting_trx_id` = d.`lock_trx_id` 
  LEFT JOIN information_schema.INNODB_LOCKS e 
    ON a.`blocking_trx_id` = e.`lock_trx_id`  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章