2012-10-30 11 views

cevap

102
SHOW ENGINE INNODB STATUS \G 

Bak -

TRANSACTIONS 

Biz kullanabilirsiniz ınformatıon_schema Tablolar.

Faydalı Sorgular -

USE INFORMATION_SCHEMA 
SELECT * FROM INNODB_LOCK_WAITS; 

engelleme işlemleri

SELECT * 
FROM INNODB_LOCKS 
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS); 

VEYA

bir listesini -

tüm kilitleri işlemler hakkında kontrol etmek için bekliyor perticular masaya kilitleri

A listesi: kilitleri bekleyen işlemlerin

SELECT * FROM INNODB_LOCKS 
WHERE LOCK_TABLE = db_name.table_name; 

listesi:

SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY 
FROM INNODB_TRX 
WHERE TRX_STATE = 'LOCK WAIT'; 

Referans-MySQL Troubleshooting: What To Do When Queries Don't Work, Bölüm 6 - Sayfa 96.

+13

Başvurulan tüm tabloların 'INFORMATION_SCHEMA' veritabanında yer aldığını unutmayın. –

+4

Bu InnoDB tabloları gerçekten metatdata kilitleri hakkında bilgi tutar mı? Bu blog yazısı başka bir şekilde önerilmektedir: http://mysql.wisborg.dk/2014/01/13/who-holds-the-metadata-lock-mysql-5-7-3-brings-help/ – Gareth

+0

@Gareth: çalışır mysql -mysql-5-7-3-. Güncelleme için teşekkürler. – Joddy

35

Eğer tabloyu kilitleme işlemini bulamıyorsanız (bunun nedeni ölüdür), bu bir iş parçacığı olabilir Hala sonu Clear transaction deadlock?

doğrudan işlem parçacığı öldürme deneyebilirsiniz bir yorumda mentionned

---TRANSACTION 1135701157, ACTIVE 6768 sec 
MySQL thread id 5208136, OS thread handle 0x7f2982e91700, query id 882213399 xxxIPxxx 82.235.36.49 my_user cleaning up 

de

show engine innodb status; 

bu

bölüm İŞLEM gibi temizlik,

ile Benim için çalıştım.
+0

cool. işe yaradı – AmanS

4

mysql 5.7 meta veri kilit bilgilerini performance_schema.metadata_locks tablosundan görüntüler. here

0

Belgeleme ben Datagrip ile benzer bir sorunu vardı ve bu çözümlerin hiçbiri çalıştı.

Datagrip İstemcisini yeniden başlattığımda artık bir sorun değildi ve tabloları yeniden bırakabilirim.

İlgili konular