我认为您不需要知道高峰时段。您可以使用 SQL 生成它们,包装完整的查询并选择前 20 个条目,例如:
select top 20 *
from (
[...load query here...]
) qry
order by LoadPerSecond desc
这个答案对平均值有很好的启示。您可以通过查看每小时负载并除以 3600 来计算每秒负载。
要初步了解上周的负载,您可以尝试(Sql Server 语法):
select datepart(dy,createdate) as DayOfYear,
hour(createdate) as Hour,
count(*)/3600.0 as LoadPerSecond
from message
where CreateDate > dateadd(week,-7,getdate())
group by datepart(dy,createdate), hour(createdate)
要找到每分钟的峰值负载:
select max(MessagesPerMinute)
from (
select count(*) as MessagesPerMinute
from message
where CreateDate > dateadd(days,-7,getdate())
group by datepart(dy,createdate),hour(createdate),minute(createdate)
)
按 datepart(dy,...) 分组是区分日期而不用担心月份边界的简单方法。它一直有效,直到您在一年前选择更多,但这对于性能查询来说是不寻常的。