Как посчитать throughput QPS в SQL
Содержание:
Зачем 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.
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.
Связанные темы
- Как посчитать API latency в SQL
- Как посчитать latency percentiles в SQL
- Как посчитать error rate в SQL
- Как посчитать Apdex score в SQL
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.