Rumah >pangkalan data >tutorial mysql >Bagaimana Mengenalpasti Transaksi Mana yang Menyebabkan Keadaan 'Menunggu Kunci Metadata Jadual' dalam MySQL?

Bagaimana Mengenalpasti Transaksi Mana yang Menyebabkan Keadaan 'Menunggu Kunci Metadata Jadual' dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 02:12:30218semak imbas

How to Identify Which Transaction is Causing the “Waiting for Table Metadata Lock” State in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn