Skip to content
← Back to Cosmos DB overview
Killer #3

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. 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. 2

    Scan

    Roda agg em ~5-30s dependendo do tamanho. Limit 200 partitions; pra collections muito grandes, repete por sub-range.

  3. 3

    Leia o heatmap

    Cada célula = uma partition key value. Cor = doc count relativo. Hover mostra valor exato.

  4. 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.

Ready to see it on your Cosmos account?Download NoSqlStudioNext → Index Policy Editor