You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL数据库中获取session/thread的启动/创建时间

已启用Performance Schema的MySQL社区版获取会话/线程创建时间的方法
  • 方法1:直接查询performance_schema.threads表的THREAD_START_TIME字段
    该字段是MySQL 5.7及以上版本提供的线程启动绝对时间戳,精度为秒,不受线程当前运行状态影响,是最准确的查询方式,可通过过滤PROCESSLIST_ID非空的结果排除后台系统线程,仅保留用户创建的会话:
SELECT 
  THREAD_ID,
  PROCESSLIST_ID AS session_id,
  PROCESSLIST_USER AS user,
  PROCESSLIST_HOST AS host,
  THREAD_START_TIME AS create_time
FROM performance_schema.threads
WHERE PROCESSLIST_ID IS NOT NULL
ORDER BY create_time DESC;
  • 方法2:通过线程状态持续时间反向推算
    如果使用的是更早的不支持THREAD_START_TIME的版本,可以用PROCESSLIST_TIME字段结合当前时间计算创建时间,该字段记录了线程处于当前状态的秒数:
SELECT 
  PROCESSLIST_ID AS session_id,
  PROCESSLIST_USER AS user,
  PROCESSLIST_HOST AS host,
  NOW() - INTERVAL PROCESSLIST_TIME SECOND AS estimated_create_time
FROM performance_schema.threads
WHERE PROCESSLIST_ID IS NOT NULL;

注意:该方式仅在线程全程处于空闲(Sleep)状态时计算结果准确,若线程正在执行查询等操作,得到的是当前操作的启动时间而非会话创建时间,仅作为兼容旧版本的备选方案。

  • 方法3:查询information_schema.processlist表推算
    该表的TIME字段和performance_schema.threads的PROCESSLIST_TIME字段取值完全一致,适合需要兼容未开启Performance Schema场景的逻辑复用,推算逻辑和方法2相同:
SELECT 
  ID AS session_id,
  USER,
  HOST,
  NOW() - INTERVAL TIME SECOND AS estimated_create_time
FROM information_schema.processlist
WHERE ID != CONNECTION_ID(); -- 可加该条件过滤当前查询会话本身

内容的提问来源于stack exchange,提问作者Stefan Pastrilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:24:03