Hot Partition Detector
Cosmos requer partition key. Má escolha = uma partição carrega 60% dos docs + 90% do RU = throttle no peak. Hoje o 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 a top partition tem > 40% do total.
Onde ele fica no app: Tools → Cosmos DB → Hot Partition Detector
O que ele faz
- Aggregation $group + $bsonSize contra a collection escolhida.
- Heatmap visual com cores progressivas (cool → hot) por doc count.
- Top-20 partitions com share % + RU/dia estimado.
- Skew alert: severe (>40%) / moderate (>20%) / ok (<20%).
- Sugestão textual de partition key alternativa baseada em cardinalidade + uniformidade.
Passo a passo
- 1
Abra o detector e escolha a collection
Tools → Cosmos DB → Hot Partition Detector. Coloque o namespace (ex: `app.orders`) e o path do partition key (ex: `tenantId`).
- 2
Scan
Roda agg em ~5-30s dependendo do tamanho. Limit 200 partitions; para collections muito grandes, repita por sub-range.
- 3
Leia o heatmap
Cada célula = um valor de partition key. Cor = doc count relativo. Hover mostra o valor exato.
- 4
Decida
Se severe skew detectado, considere: (a) partition key composto (`tenantId+region`), (b) hash key sintética (`hash(naturalKey) mod N`), (c) split lógico da collection. Use o WHAT-IF Lab para simular a mudança antes.
Casos de uso reais
Cliente enterprise dominando
SaaS B2B descobriu que o cliente "ACME Corp" detinha 73% dos docs da collection `events`. Migrou para o composite `tenantId+eventBucket` (bucket = hash(eventId) mod 10). Distribuição final: maior partition 4.2%.
Timestamp como partition key (anti-pattern)
Time usava `date` como partition key. Heatmap mostrou o último dia carregando 90% do throughput. Migraram para `tenantId` + ordenação por date no query. p99 -45%.
FAQ
Não funciona para collections > 10M docs?
Funciona, mas $group fica caro. Considere rodar contra um sample $sample (10k docs) para estimativa rápida.
Posso testar antes de mudar partition key?
Sim — o WHAT-IF Lab tem mutation kind `change-partition-key` que simula o impacto no workload real.