在MySQL 8中,通过SHOW PROCESSLIST命令无法直接查看阻塞源。不过你可以使用以下方法来查找正在发生阻塞的进程和相关信息:
使用
SHOW ENGINE INNODB STATUS\G命令,查看InnoDB引擎的状态信息。其中包含了当前正在运行的事务、锁定情况等详细信息。你可以从输出中查找到具体的阻塞源。使用
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;查询INFORMATION_SCHEMA.INNODB_LOCK_WAITS表,该表会显示出当前存在的锁等待情况,包括被阻塞和正在等待的事务ID。运行`SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread,
r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_queryFROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS w INNER JOIN INFORMATION_SCHEMA.INNODB_TRX b ON b.trx_id = w.blocking_trx_id INNER JOIN INFORMATION_SCHEMA.INNODB_TRX r ON r.trx_id = w.requesting_trx_id;
查询INFORMATION_SCHEMA.INNODB_LOCK_WAITS,INFORMATION_SCHEMA.INNODB_TRX` 表结合起来查看当前的锁等待链。
这些方法可以帮助你更详细地了解正在发生阻塞的进程以及相关信息。
内容由零声教学AI助手提供,问题来源于学员提问




