mysql - 需要在不重启数据库的情况下清除 MySQL InnoDB 锁

标签 mysql locking innodb

我有一个阻止用户登录的 MySQL InnoDB 锁。目前我不关心这个锁的原因——我只需要在不重新启动数据库的情况下清除锁。终止查询进程仅供引用。有什么建议么?谢谢。

最佳答案

这是我解决问题的方式:

mysql> show engine innodb status\G
*************************** 1. row ***************************
  Type: InnoDB
  Name: 
Status: 
=====================================
120710 18:05:37 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 37 seconds
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 208374, signal count 196902
Mutex spin waits 0, rounds 39211638, OS waits 80663
RW-shared spins 588505, OS waits 68505; RW-excl spins 3204502, OS waits 53586
------------
TRANSACTIONS
------------
Trx id counter 1 3626791829
Purge done for trx's n:o < 1 3625948819 undo n:o < 0 0
History list length 6754
LIST OF TRANSACTIONS FOR EACH SESSION:
...
---TRANSACTION 1 3625948818, ACTIVE 2892 sec, process no 1981, OS thread id 140020625811200
2 lock struct(s), heap size 368, 1 row lock(s), undo log entries 1

>>>>> MySQL thread id 14982, query id 232584561 localhost dbuser

Trx read view will not see trx with id >= 1 3625948819, sees < 1 3625948817

mysql> kill 14982;
Query OK, 0 rows affected (0.00 sec)

请注意,带有 >>>>> 的行是定义 MySQL 线程 ID 的地方 - 应该终止该线程。

请同时查看 this 帖子 - 非常有用。

关于mysql - 需要在不重启数据库的情况下清除 MySQL InnoDB 锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10904044/

相关文章:

php - 在运行 alter table 之前需要找出一个表中有某些列

mysql - SQL是否可以组合group、count和distinct?

MySQL composite unique on FK's

mysql - Geodjango和Innodb,混合innodb和myisam模型

php - 将 php 函数的返回值传递给 mysql_query

java - 为什么要在释放操作中获取锁

锁定和 Redis

java - Java内存模型如何确保所有线程看到的变量值一致?

mysql - 两个外键,其中一个不为 NULL : How to solve this in SQL?

Mysql - 在子查询中使用另一个查询的结果