SaaS B2B — p99 de 4.2s para 180ms em /api/orders
Endpoint principal travando em horário comercial. Suporte recebia 30+ tickets/dia. Time de eng havia tentado adicionar índices, sem sucesso.
Transação SQL longa fazendo SELECT FOR UPDATE em uma tabela orders sem índice composto adequado. Em pico, 200+ conexões ficavam bloqueadas em fila de lock. Pool do PgBouncer estourava e cascateava 502.
Reescrita da transação para usar UPDATE ... RETURNING com lock otimista. Índice composto (status, created_at, customer_id). Particionamento mensal de orders. Adição de circuit breaker no client.