Не думаю, что вам нужно знать часы пик; Вы можете сгенерировать их с помощью 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)
)
Группировка по датам (dy, ...) - это простой способ различать дни, не беспокоясь о границах месяца. Он работает до тех пор, пока вы не выберете больше года назад, но это было бы необычно для запросов производительности.