Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć, która transakcja powoduje stan blokady Oczekiwanie na metadane tabeli?

Działa dla MySql w wersji <5.7.3

SHOW ENGINE INNODB STATUS \G

Poszukaj sekcji -

TRANSACTIONS

Możemy użyć INFORMATION_SCHEMA Tabele.

Przydatne zapytania

Aby sprawdzić wszystkie transakcje blokad, na które czekają:

USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;

Lista transakcji blokujących:

SELECT * 
FROM INNODB_LOCKS 
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS);

LUB

SELECT INNODB_LOCKS.* 
FROM INNODB_LOCKS
JOIN INNODB_LOCK_WAITS
  ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID);

Lista zamków na konkretnym stole:

SELECT * FROM INNODB_LOCKS 
WHERE LOCK_TABLE = db_name.table_name;

Lista transakcji oczekujących na blokady:

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

Odniesienie - Rozwiązywanie problemów z MySQL:co zrobić, gdy zapytania nie działają , Rozdział 6 - Strona 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. Importuj plik SQL do mysql

  2. Czy istnieje RZECZYWISTA różnica wydajności między kluczami podstawowymi INT i VARCHAR?

  3. CURRENT_TIMESTAMP Przykłady – MySQL

  4. Czy mogę połączyć wiele wierszy MySQL w jedno pole?

  5. MySQL:czy w instrukcji SELECT rozróżniana jest wielkość liter?