Pular para o conteúdo
← Voltar ao overview do Cosmos DB
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 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. 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. 2

    Scan

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

  3. 3

    Leia o heatmap

    Cada célula = um valor de partition key. Cor = doc count relativo. Hover mostra o valor exato.

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

Pronto para ver isso na sua conta Cosmos?Baixar NoSqlStudioPróximo → Index Policy Editor