Rumah > Artikel > pangkalan data > Bagaimana Mengenalpasti Transaksi Mana yang Menyebabkan Keadaan "Menunggu Kunci Metadata Jadual" dalam MySQL?
Mengenalpasti Transaksi Menyebabkan Keadaan "Menunggu Kunci Metadata Jadual"
Apabila mencuba operasi DDL pada jadual dalam MySQL versi 5.5.24 tetapi menghadapi Mesej "Menunggu kunci metadata jadual", menjadi penting untuk menentukan transaksi yang bertanggungjawab untuk kunci ini.
Penyelesaian
Untuk versi MySQL di bawah 5.7.3 :
Laksanakan arahan berikut untuk mendapatkan maklumat terperinci tentang keadaan:
SHOW ENGINE INNODB STATUS \G
Cari bahagian "TRANSAKSI" dan kenal pasti transaksi terbuka yang masih belum ditutup.
Untuk semua versi MySQL:
Dapatkan maklumat daripada jadual INFORMATION_SCHEMA:
Semua Kunci Menunggu:
USE INFORMATION_SCHEMA; SELECT * FROM INNODB_LOCK_WAITS;
Menyekat Transaksi:
SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS);
ATAU
SELECT INNODB_LOCKS.* FROM INNODB_LOCKS JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID);
Kunci pada Jadual Tertentu:
SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name;
Menunggu Transaksi:
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT';
Rujuk Penyelesaian Masalah MySQL: Apa Yang Perlu Dilakukan Apabila Pertanyaan Tidak Berfungsi, Bab 6, Halaman 96 untuk mendapatkan pandangan tambahan .
Atas ialah kandungan terperinci Bagaimana Mengenalpasti Transaksi Mana yang Menyebabkan Keadaan "Menunggu Kunci Metadata Jadual" dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!