依次执行1-6步,运行第6步生成的语句即可。
如果特别着急,运行 1 2 6 步 以及第6步生成的kill语句 即可。
show open tables where in_use > 0 ;
如果查询结果为空。则证明表没有在使用。结束。
mysql> show open tables where in_use > 0 ;
Empty set (0.00 sec)
如果查询结果不为空,继续后续的步骤。
mysql> show open tables where in_use > 0 ;
+----------+-------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+-------+--------+-------------+
| test | t | 1 | 0 |
+----------+-------+--------+-------------+
1 row in set (0.00 sec)
show processlist;
show processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程(即与您正在使用的MySQL帐户关联的线程),看不到其它用户正在运行的线程。如果不使用FULL关键字,Info字段中只显示每条语句的前100个字符。
SELECT * FROM information_schema.INNODB_TRX;
SELECT * FROM information_schema.INNODB_LOCKs;
SELECT * FROM information_schema.INNODB_LOCK_waits;
看事务表INNODB_TRX,里面是否有正在锁定的事务线程,看看ID是否在show processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。
搜索的结果是在事务表发现了很多任务,这时候最好都kill掉。
这里用的方法是:通过information_schema.processlist表中的连接信息生成需要处理掉的MySQL连接的语句临时文件,然后执行临时文件中生成的指令。
SELECT concat("KILL ",id,";")
FROM information_schema.processlist p
INNER JOIN information_schema.INNODB_TRX x
ON p.id=x.trx_mysql_thread_id
WHERE db="test";
记得修改对应的数据库名。
这个语句执行后结果如下:
mysql> SELECT concat("KILL ",id,";") FROM information_schema.processlist p INNER JOIN information_schema.INNODB_TRX x ON p.id=x.trx_mysql_thread_id WHERE db="test";
+------------------------+
| concat("KILL ",id,";") |
+------------------------+
| KILL 42; |
| KILL 40; |
+------------------------+
2 rows in set (0.00 sec)
执行结果里的两个kill语句即可解决锁表。
在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 RE...
在本章中,我们将研究如何在WordPress中编辑用户。以下是在WordPress中编辑用户的简单步骤。步骤(1)- 点击Users → All Users。...
在本章中,我们将学习如何更新WordPress中的版本。 在这里,我们将通过管理面板将WordPress升级到最新版本。以下是更新WordPress...
由于分页对象预定义的样式比较有限,有的时候我们想自定义分页的样式或者标签,由于分页对象的的所有属性和方法都是公开的,这便...
代码分层的意义在于将程序逻辑进一步解耦,将层级之间的数据流和依赖关系设计为单向链路,使得系统架构更加灵活易扩展。一、基本...
func main() {app := iris.Default()// Query string parameters are parsed using the existing underlying request object.// ...
普通路由r.GET("/get",func(c *gin.Context) {})r.GET("/login",func(c *gin.Context) {})r.POST("/login",func(c *gin.Context)...
classtornado.tcpclient.TCPClient(resolver:Optional[tornado.netutil.Resolver]=None)一个非阻塞的TCP连接工厂。在5.0版中更改...