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_LOCKS和INFORMATION_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_LOCKS和INFORMATION_SCHEMA.INNODB_LOCK_WAITS需要具备相应的权限,并且这些表的信息是从InnoDB引擎获取的,因此只代表当前实例的加锁情况,不能显示跨实例的锁竞争情况。
Rcord Lock、Gap Lock、Next-key Lock、Next-key Lock
详解这篇文章
浙公网安备 33010602011771号