Rcord Lock、Gap Lock、Next-key Lock(待补充)

查询mysql加锁情况

在MySQL中,可以通过SHOW ENGINE INNODB STATUS查看加锁情况。

需要通过下列配置才能从SHOW ENGINE INNODB STATUS 中看到锁的状态。

SET GLOBAL innodb_status_output=ON;
SET GLOBAL innodb_status_output_locks=ON;

也可以通过查询INFORMATION_SCHEMA.INNODB_LOCKSINFORMATION_SCHEMA.INNODB_LOCK_WAITS表来查看当前的加锁情况。

以下是查询加锁情况的示例SQL语句:

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_query
FROM
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;

这个查询将列出当前等待锁的事务(waiting_trx)和持有锁的事务(blocking_trx)的信息,包括事务ID、线程ID和正在执行的查询。

请注意,查询INFORMATION_SCHEMA.INNODB_LOCKSINFORMATION_SCHEMA.INNODB_LOCK_WAITS需要具备相应的权限,并且这些表的信息是从InnoDB引擎获取的,因此只代表当前实例的加锁情况,不能显示跨实例的锁竞争情况。

Rcord Lock、Gap Lock、Next-key Lock、Next-key Lock

详解这篇文章

 
posted on 2023-04-06 16:43  zhengbiyu  阅读(27)  评论(0)    收藏  举报