Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để biết giao dịch nào đang gây ra trạng thái khóa siêu dữ liệu bảng Đang chờ?

Hoạt động cho phiên bản MySql <5.7.3

SHOW ENGINE INNODB STATUS \G

Tìm Phần -

TRANSACTIONS

Chúng tôi có thể sử dụng INFORMATION_SCHEMA Bảng.

Truy vấn hữu ích

Để kiểm tra tất cả các giao dịch khóa đang chờ:

USE INFORMATION_SCHEMA;
SELECT * FROM INNODB_LOCK_WAITS;

Danh sách các giao dịch chặn:

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

HOẶC

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

Danh sách các ổ khóa trên bảng cụ thể:

SELECT * FROM INNODB_LOCKS 
WHERE LOCK_TABLE = db_name.table_name;

Danh sách các giao dịch đang chờ khóa:

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

Tham khảo - Gỡ rối MySQL:Phải làm gì khi truy vấn không hoạt động , Chương 6 - Trang 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. Chuyển từ bản sao truyền thống sang GTID

  2. Cách thêm Zeros hàng đầu vào một số trong MySQL

  3. Cách tách một chuỗi trong MySQL

  4. Truy vấn SCHEMA THÔNG TIN của MySQL:Tại sao? Thế nào?

  5. Thông báo ClusterControl 1.7.5:Bảo trì và hỗ trợ cụm nâng cao cho PostgreSQL 12 và MongoDB 4.2