Hot Partition Detector
Cosmos requer partition key. Má escolha = uma partição carrega 60% dos docs + 90% do RU = throttle no peak. Hoje DBA descobre quando o app cai. O Hot Partition Detector roda um $group por partition key, mede doc count + RU estimado per partition, plota num heatmap colorido (cool blue → hot red) e dispara alerta quando top partition tem > 40% do total.
Where it lives in the app: Tools → Cosmos DB → Hot Partition Detector
What it does
- $group + $bsonSize aggregation contra a collection escolhida.
- Heatmap visual com cores progressivas (cool → hot) por doc count.
- Top-20 partitions com share % + RU/day estimado.
- Skew alert: severe (>40%) / moderate (>20%) / ok (<20%).
- Sugestão textual de partition key alternativa baseada em cardinality + uniformity.
Step-by-step
- 1
Abra o detector e escolha a collection
Tools → Cosmos DB → Hot Partition Detector. Coloque o namespace (ex: `app.orders`) e o partition key path (ex: `tenantId`).
- 2
Scan
Roda agg em ~5-30s dependendo do tamanho. Limit 200 partitions; pra collections muito grandes, repete por sub-range.
- 3
Leia o heatmap
Cada célula = uma partition key value. Cor = doc count relativo. Hover mostra valor exato.
- 4
Decida
Se severe skew detected, considere: (a) partition key composto (`tenantId+region`), (b) hash key sintética (`hash(naturalKey) mod N`), (c) split da collection logicamente. Use o WHAT-IF Lab pra simular a mudança antes.
Real use cases
Cliente enterprise dominando
SaaS B2B descobriu que cliente "ACME Corp" detinha 73% dos docs da `events` collection. Migrou pro composite `tenantId+eventBucket` (bucket = hash(eventId) mod 10). Distribuição final: largest partition 4.2%.
Timestamp como partition key (anti-pattern)
Time usava `date` como partition key. Heatmap mostrou último dia carregando 90% do throughput. Migraram pra `tenantId` + ordering por date no query. p99 -45%.
FAQ
Não funciona pra collections > 10M docs?
Funciona, mas $group fica caro. Considere rodar contra uma sample $sample (10k docs) pra estimativa rápida.
Posso testar antes de mudar partition key?
Sim — WHAT-IF Lab tem mutation kind `change-partition-key` que simula o impacto no workload real.