MySQL查询状态被杀

MySQL query status killed

当我显示进程列表时;

其中一行显示状态 Killed 和查询 NULL

我们是否应该使用 Kill QUERY_ID 终止此 NULL 查询?

这会影响数据库吗?

当你 运行 一个 show processlist 你会得到一些东西

mysql> show processlist \G
*************************** 1. row ***************************
     Id: 102524
   User: someuser
   Host: localhost
     db: db_name
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
*************************** 2. row ***************************
     Id: 102532
   User: someuser
   Host: host ip 
     db: db_name
Command: Query
   Time: 0
  State: Sending data
   Info: select .....,
2 rows in set (0.00 sec)

这里会列出当前正在执行的查询,如果你想杀死其中一个,你需要使用 ID

例如,如果我需要终止查询且其 ID 为 102532,则可以按以下方式完成

kill 102532

现在后果是什么,假设您正在 运行 正在使用某些查询的报告及其执行或发送数据,如果您在中途终止,则报告数据将不正确考虑查询返回一些数据的值。

在大多数情况下,select 比插入、删除或更新要花时间,除非是批量删除、更新或插入。

就 select 对数据库的影响而言,它不会有任何影响,insert/update/delete 是的,如果查询仍处于活动状态,您可能没有数据 inserted/updated 或删除.

您可以使用

获取查询的完整信息
show full processlist