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

如何查询Teradata近一周延迟、活跃、空闲会话数及按日时统计会话数

Teradata会话状态查询与维度统计方案

一、查询近一周的延迟、活跃、空闲会话数量

使用Teradata系统视图DBC.SessionInfoV获取实时会话数据,结合会话状态字段与登录时间过滤近一周范围:

SELECT
  CASE SessionState
    WHEN 'A' THEN '活跃会话'
    WHEN 'I' THEN '空闲会话'
    WHEN 'Q' THEN '延迟队列会话'
    ELSE '其他状态'
  END AS 会话状态,
  COUNT(*) AS 会话数量
FROM DBC.SessionInfoV
WHERE LoginTime >= CURRENT_TIMESTAMP - INTERVAL '7' DAY
GROUP BY SessionState
ORDER BY 会话状态;

关键说明:

  • SessionState枚举值:A代表正在执行SQL的活跃会话,I代表已登录但无任务的空闲会话,Q代表等待资源的延迟队列会话;如需确认全量状态码,可查询DBC.SessionStateV视图。
  • 若需按自然日(而非当前时间往前推7天)过滤,将CURRENT_TIMESTAMP替换为CURRENT_DATE即可。

二、按日/按时维度统计各会话状态数量

历史维度统计依赖DBC.SessionStatsV——这是Teradata定期收集的会话快照表(默认15分钟收集一次,可配置),通过CollectTime字段标记快照生成时间实现维度聚合。

1. 按日统计

SELECT
  CAST(CollectTime AS DATE) AS 统计日期,
  CASE SessionState
    WHEN 'A' THEN '活跃会话'
    WHEN 'I' THEN '空闲会话'
    WHEN 'Q' THEN '延迟队列会话'
    ELSE '其他状态'
  END AS 会话状态,
  COUNT(*) AS 会话数量
FROM DBC.SessionStatsV
WHERE CollectTime >= CURRENT_DATE - INTERVAL '7' DAY
GROUP BY CAST(CollectTime AS DATE), SessionState
ORDER BY 统计日期, 会话状态;

2. 按时统计(小时粒度)

SELECT
  TRUNC(CollectTime, 'HOUR') AS 统计小时,
  CASE SessionState
    WHEN 'A' THEN '活跃会话'
    WHEN 'I' THEN '空闲会话'
    WHEN 'Q' THEN '延迟队列会话'
    ELSE '其他状态'
  END AS 会话状态,
  COUNT(*) AS 会话数量
FROM DBC.SessionStatsV
WHERE CollectTime >= CURRENT_TIMESTAMP - INTERVAL '7' DAY
GROUP BY TRUNC(CollectTime, 'HOUR'), SessionState
ORDER BY 统计小时, 会话状态;

补充说明:

  • 若需15分钟粒度统计(匹配默认快照间隔),将TRUNC(CollectTime, 'HOUR')替换为TRUNC(CollectTime, 'QUARTER HOUR')即可。
  • 查询上述系统视图需具备SELECT ON DBC.SessionInfoV和SELECT ON DBC.SessionStatsV权限,权限不足时需联系DBA授予。

内容的提问来源于stack exchange,提问作者John J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:42:37