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

Bagaimana untuk Mengenalpasti Transaksi yang Menyebabkan \'Menunggu Kunci Metadata Jadual\' dalam MySQL?

DDD
Lepaskan: 2024-10-31 01:19:29
asal
719 orang telah melayarinya

How to Identify Transactions Causing

Mengenalpasti Transaksi Menyebabkan Keadaan "Menunggu Kunci Metadata Jadual"

Apabila cuba untuk melaksanakan operasi DDL pada jadual, adalah mungkin untuk menghadapi Mesej "Menunggu kunci metadata jadual" dalam SHOW PROCESSLIST. Ini menunjukkan bahawa transaksi lain masih merujuk jadual, menghalang metadatanya daripada diubah.

Mengenalpasti Transaksi

Versi MySQL sebelum 5.7.3:

  • Jalankan arahan: SHOW ENGINE INNODB STATUS G
  • Cari bahagian "TRANSAKSI".

Untuk MySQL versi 5.7 .3 dan ke atas:

  • Gunakan jadual INFORMATION_SKEMA:

Untuk mengenal pasti semua transaksi kunci menunggu:

USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;
Salin selepas log masuk

Untuk mengenal pasti transaksi menyekat:

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

Untuk mengenal pasti kunci pada jadual tertentu:

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

Untuk mengenal pasti transaksi menunggu kunci:

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

Contoh Output:

Pertanyaan INNODB_LOCK_WAITS mungkin memberikan output yang serupa dengan:

...
REQUESTING TRXs:
trx id 10,mysql thread id 1161142,query SELECT ...
trx id 16,mysql thread id 1161141,query SELECT ...
...
Salin selepas log masuk

Ini menunjukkan bahawa ID transaksi 10 dan 16 sedang menunggu untuk dikunci. Analisis lanjut boleh dijalankan menggunakan pertanyaan lain yang disediakan untuk mengenal pasti transaksi penyekatan dan jadual tertentu sedang dikunci.

Atas ialah kandungan terperinci Bagaimana untuk Mengenalpasti Transaksi yang Menyebabkan \'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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan