Как посчитать throughput QPS в SQL

Закрепи формулу throughput qps в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать throughput qps в Telegram

Зачем QPS

QPS (queries per second) — основная нагрузка-метрика. Знание QPS показывает, сколько compute нужно, когда horizontal scaling нужен, и где bottleneck. Combined с latency и error rate — golden trio SRE.

Формула

QPS = total_requests / period_seconds

Обычно measured в 1-minute или 5-minute windows.

QPS в SQL

SELECT
    DATE_TRUNC('minute', request_timestamp) AS minute,
    COUNT(*) / 60.0 AS qps,
    COUNT(*) AS requests_in_minute
FROM api_requests
WHERE request_timestamp >= NOW() - INTERVAL '1 hour'
GROUP BY DATE_TRUNC('minute', request_timestamp)
ORDER BY minute;

QPS 100 — small service. 10k+ — high-traffic.

Peak vs average

SELECT
    DATE(request_timestamp) AS day,
    AVG(qps) AS avg_qps,
    MAX(qps) AS peak_qps,
    MAX(qps) / NULLIF(AVG(qps), 0) AS peak_to_avg_ratio
FROM minute_qps
WHERE request_timestamp >= NOW() - INTERVAL '30 days'
GROUP BY DATE(request_timestamp)
ORDER BY day;

Peak / avg ratio — burstiness. Ratio 3+ — нужны spike-capable systems.

Закрепи формулу throughput qps в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать throughput qps в Telegram

Capacity planning

Headroom = peak QPS / max sustainable QPS:

WITH peak AS (
    SELECT MAX(qps) AS peak_qps
    FROM minute_qps
    WHERE request_timestamp >= NOW() - INTERVAL '30 days'
),
capacity AS (
    SELECT 5000 AS max_sustainable_qps  -- FROM load tests
)
SELECT
    p.peak_qps,
    c.max_sustainable_qps,
    p.peak_qps / NULLIF(c.max_sustainable_qps, 0) * 100 AS utilization_pct,
    c.max_sustainable_qps - p.peak_qps AS headroom
FROM peak p, capacity c;

Utilization свыше 80% — план scale up.

Частые ошибки

Ошибка 1. Average daily QPS. Скрывает peaks. Peak QPS — для capacity.

Ошибка 2. Все endpoints вместе. Healthcheck QPS высокий, но нет load. Сегментируйте.

Ошибка 3. Local time vs UTC. Peak в local time meaningful для users. UTC для infrastructure.

Ошибка 4. Include 5xx errors в QPS. Errors — тоже нагрузка. Include.

Ошибка 5. Smooth via long window. 1-minute window catches spike. 1-hour window — no.

Связанные темы

FAQ

Peak QPS или average?

Peak — capacity. Average — billing/cost.

Bursty или steady?

E-com (Black Friday) — bursty. Internal services — steady.

Per-instance QPS?

Total / number of instances. Average per instance — sizing.

QPS by endpoint critical?

Yes — top endpoints might dominate, others ignored.

Sustained vs peak?

Sustained — 5+ minutes high. Peak — single moment. Sustained для capacity.