Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menemukan transaksi mana yang menyebabkan status kunci metadata tabel Menunggu?

Berfungsi untuk versi MySql <5.7.3

SHOW ENGINE INNODB STATUS \G

Cari Bagian -

TRANSACTIONS

Kita dapat menggunakan INFORMATION_SCHEMA Tabel.

Kueri Berguna

Untuk memeriksa semua transaksi kunci yang menunggu:

USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;

Daftar transaksi pemblokiran:

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);

Daftar kunci pada tabel tertentu:

SELECT * FROM INNODB_LOCKS 
WHERE LOCK_TABLE = db_name.table_name;

Daftar transaksi yang menunggu kunci:

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

Referensi - Pemecahan Masalah MySQL:Apa yang Harus Dilakukan Saat Kueri Tidak Berfungsi , Bab 6 - Halaman 96.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana TIDAK RLIKE Bekerja di MySQL

  2. Bagaimana Fungsi CHARACTER_LENGTH() Bekerja di MySQL

  3. PDO MySQL:Gunakan PDO::ATTR_EMULATE_PREPARES atau tidak?

  4. Melarikan diri dari kutipan tunggal dalam PHP saat memasukkan ke MySQL

  5. Bagaimana cara mengubah susunan database, tabel, kolom?