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

如何计算Azure SQL Database的每日平均连接数?

计算Azure SQL Database的每日平均连接数

问题分析

sys.database_connection_stats表每5分钟聚合一次success_count,直接使用AVG(success_count)得到的是每5分钟区间的连接数平均值,并非你需要的基于每日总连接数计算的平均值。

解决方案

根据你的需求,我们分两步实现:先按数据库和日期聚合得到每日总连接数,再基于这些数据计算目标平均值。

场景1:计算30天内每个数据库的平均每日总连接数

该场景将30天内每个数据库的每日总连接数求和后,除以有效天数(避免无数据日期影响结果),得到整体日均连接数:

DECLARE @StartDate DATE = DATEADD(day, -30, GETDATE()) -- 取最近30天数据

SELECT 
    database_name,
    AVG(Connections) AS Avg_Daily_Connections
FROM (
    -- 子查询:按天统计每个数据库的每日总连接数
    SELECT 
        database_name,
        CAST(start_time AS DATE) AS stat_date,
        SUM(success_count) AS Connections
    FROM sys.database_connection_stats
    WHERE start_time > @StartDate
    GROUP BY database_name, CAST(start_time AS DATE)
) AS daily_totals
GROUP BY database_name
ORDER BY Avg_Daily_Connections DESC;

场景2:计算每天的平均每5分钟连接数

如果需要查看单日范围内的连接密度,可计算当日总连接数除以当日的5分钟区间数量,得到当日平均每5分钟的连接数:

DECLARE @StartDate DATE = DATEADD(day, -30, GETDATE()) -- 取最近30天数据

SELECT 
    database_name,
    stat_date,
    SUM(success_count) AS Daily_Total_Connections,
    -- 当日总连接数除以当日的5分钟区间数,得到日均每5分钟连接数
    CAST(SUM(success_count) AS FLOAT) / COUNT(*) AS Avg_Per_5Min_Interval
FROM sys.database_connection_stats
WHERE start_time > @StartDate
GROUP BY database_name, CAST(start_time AS DATE)
ORDER BY stat_date DESC, Daily_Total_Connections DESC;

说明

  • 修改DATEADD(day, -30, GETDATE())中的数字可调整统计的时间范围,当前为最近30天
  • 场景1适合分析数据库的整体连接趋势,场景2适合查看单日的连接波动情况

内容的提问来源于stack exchange,提问作者Francesco Mantovani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:40:24