我正在运行启用了慢速查询日志记录的 MySql5.7,并且日志包含的元数据比文档中提到的要多;每次查询之前都会打印以下三行:
# Time: 2025-02-18T14:25:16.286041Z
# User@Host: root[root] @ localhost [] Id: 261083
# Query_time: 3.677193 Lock_time: 0.001193 Rows_sent: 1 Rows_examined: 4334365
文档仅解释第三行:
写入日志的每个语句前面都有一行以 # 字符开头,并包含以下字段(所有字段都在一行上):
- 查询时间
- 锁定时间
- 已发送行数
- 已检查行数
在其他两行中,大多数字段都是显而易见的;但有人知道Id字段代表什么吗?对于我的慢速日志中的大多数条目,它都是不同的,但在某些情况下,有几个条目具有相同的 Id。
Id 代表执行查询的 MySQL 会话/连接的线程 ID。
如何验证?
我已经启用慢日志并执行
在另一个会话中,我运行 SHOW PROCESSLIST(抱歉,图片不对)
日志文件上的输出
断开/再次连接后重复相同的步骤,你会看到Id会发生变化。
注意。我使用的是 MySQL 8+,但在 MySQL 5.7 中也一样
如果我有一个打开的连接,并且我将在不关闭连接/会话的情况下执行 5 个不同的慢速查询,那么慢速日志中的 id 对于这 5 个查询将是相同的。
简单来说,如果某些查询的 ID 相同,则意味着这些查询是从同一连接执行的
其中“id”的唯一用途
PROCESSLIST
是KILL
一个过程。查看慢速日志时该 id 可能没有任何用处。