MySQL查看锁表和解除锁表
- 作者:学为先编程 https://www.bilibili.com/read/cv22748304 出处:bilibili
show open tables
MySQL中可以使用以下命令查看当前被锁定的表和相关信息:
SHOW OPEN TABLES WHERE In_Use > 0;
show open tables where in_use > 0;
-- 两个表,同时开启事务,同时更新,即可锁表
START TRANSACTION;
start transaction;
UPDATE blog
SET title = 11
WHERE
id = 1;
- 这会返回当前正在使用的表,其中In_Use列的值表示当前被锁定的连接数。
Database Table In_use Name_locked
test_01 blog 1 0
kill connection
如果需要解除锁定,可以使用以下命令强制关闭被锁定的连接:
KILL CONNECTION <connection_id>;
kill connection
其中,<connection_id>为需要关闭的连接的ID。
show processlist
可以使用以下命令来查看当前连接的ID:
SHOW PROCESSLIST;
show processlist;
这会返回当前MySQL进程列表,其中包括每个连接的ID。
需要注意的是,在强制关闭连接之前,需要确保该连接没有正在进行的事务或操作,否则可能会导致数据丢失或数据库损坏。因此,在执行KILL CONNECTION命令之前,需要仔细检查当前连接的情况。同时,也建议在解除锁定之前,先尝试使用UNLOCK TABLES命令解除表的锁定,以避免不必要的数据丢失。
id
User
Host
db
Command
Time
State
Info
5
event_scheduler
localhost
Daemon
523420
Waiting on empty queue
-- 记录1 db为null,下面的db为:test_01
-- Info为null
9
root
localhost:65474
test_01 Query
16
updating
UPDATE blog
SET title = 11
WHERE
id = 1