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

Patricia Arquette
Lepaskan: 2024-10-31 02:12:30
asal
126 orang telah melayarinya

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
Salin selepas log masuk

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;
Salin selepas log masuk

Menyekat Transaksi:

SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS);
Salin selepas log masuk

ATAU

SELECT INNODB_LOCKS.* FROM INNODB_LOCKS JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID);
Salin selepas log masuk

Kunci pada Jadual Tertentu:

SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name;
Salin selepas log masuk

Menunggu Transaksi:

SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT';
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!