Ir al contenido
← Volver al overview de Cosmos DB
Killer #3

Hot Partition Detector

Cosmos requiere partition key. Mala elección = una partición carga 60% de los docs + 90% del RU = throttle en peak. Hoy el DBA se entera cuando la app cae. El Hot Partition Detector corre un $group por partition key, mide doc count + RU estimado per partition, plotea en un heatmap coloreado (cool blue → hot red) y dispara alerta cuando la top partition tiene > 40% del total.

Dónde vive en la app: Tools → Cosmos DB → Hot Partition Detector

Qué hace

  • Aggregation $group + $bsonSize contra la collection elegida.
  • Heatmap visual con colores progresivos (cool → hot) por doc count.
  • Top-20 partitions con share % + RU/día estimado.
  • Skew alert: severe (>40%) / moderate (>20%) / ok (<20%).
  • Sugerencia textual de partition key alternativa basada en cardinalidad + uniformidad.

Paso a paso

  1. 1

    Abra el detector y elija la collection

    Tools → Cosmos DB → Hot Partition Detector. Ponga el namespace (ej: `app.orders`) y el path del partition key (ej: `tenantId`).

  2. 2

    Scan

    Corre agg en ~5-30s dependiendo del tamaño. Limit 200 partitions; para collections muy grandes, repita por sub-range.

  3. 3

    Lea el heatmap

    Cada celda = un valor de partition key. Color = doc count relativo. Hover muestra el valor exacto.

  4. 4

    Decida

    Si se detecta severe skew, considere: (a) partition key compuesto (`tenantId+region`), (b) hash key sintética (`hash(naturalKey) mod N`), (c) split lógico de la collection. Use el WHAT-IF Lab para simular el cambio antes.

Casos de uso reales

Cliente enterprise dominando

SaaS B2B descubrió que el cliente "ACME Corp" tenía 73% de los docs de la collection `events`. Migró al composite `tenantId+eventBucket` (bucket = hash(eventId) mod 10). Distribución final: mayor partition 4.2%.

Timestamp como partition key (anti-pattern)

Equipo usaba `date` como partition key. Heatmap mostró el último día cargando 90% del throughput. Migraron a `tenantId` + ordenamiento por date en la query. p99 -45%.

FAQ

¿No funciona para collections > 10M docs?

Funciona, pero $group se vuelve caro. Considere correr contra un sample $sample (10k docs) para estimación rápida.

¿Puedo testear antes de cambiar partition key?

Sí — el WHAT-IF Lab tiene mutation kind `change-partition-key` que simula el impacto en el workload real.

¿Listo para verlo en su cuenta Cosmos?Descargar NoSqlStudioSiguiente → Index Policy Editor