# Impacto de la cardinalidad en la performance de las consultas

Comprender cómo la cardinalidad afecta el rendimiento de las consultas es esencial para optimizar tanto el almacenamiento como la velocidad de acceso a los datos históricos y en tiempo real.

## **¿Por qué la cardinalidad es relevante para el rendimiento?** <a href="#undefined" id="undefined"></a>

La cardinalidad afecta directamente al rendimiento de InfluxDB por varios motivos:

* **Consumo de memoria:** Cada serie única ocupa espacio en los índices de InfluxDB, lo que incrementa el uso de memoria RAM.
* **Velocidad de consulta:** Consultar datos cuando hay millones de series únicas obliga al motor a buscar en un espacio mucho mayor, aumentando la latencia y el tiempo de respuesta.
* **Procesos de escritura y compactación:** Una alta cardinalidad puede ralentizar tanto las escrituras como las lecturas, ya que el motor debe gestionar más metadatos y estructuras de datos internas.

## **¿Cómo se genera la alta cardinalidad?** <a href="#undefined" id="undefined"></a>

La alta cardinalidad suele ser resultado de:

* Uso excesivo de tags con valores únicos o muy variables (por ejemplo, IDs de sesión, hashes, strings aleatorios).
* Generación automática de etiquetas sin control (por ejemplo, incluir `user_id` o `device_id` como tag en vez de field).

## **Impacto de la cardinalidad en la performance de las consultas** <a href="#undefined" id="undefined"></a>

### **Almacenamiento y uso de memoria**

* Cada serie única requiere un registro en el índice de la base de datos.
* Cuando la cardinalidad es alta, el índice crece y consume más memoria, llegando a saturar la RAM y ralentizando tanto lecturas como escrituras.

### **Latencia de consultas**

* Consultas que filtran por tags de alta cardinalidad pueden ser mucho más lentas, ya que el motor debe examinar muchas más series para devolver resultados.
* Las operaciones de agregación y filtrado se ven afectadas negativamente cuando hay demasiadas combinaciones únicas de tags.

## **Estrategias para controlar y optimizar la cardinalidad** <a href="#undefined" id="undefined"></a>

### **Optimización de consultas**

* **Filtrar por tags correctamente indexados:** Aprovecha que InfluxDB indexa los tags para hacer consultas más eficientes.
* **Utilizar downsampling:** Crea buckets de datos agregados para consultas históricas, reduciendo la necesidad de acceder a series de alta cardinalidad en datos antiguos.
* **Particionar datos:** Usa buckets diferentes para datos con distintos requisitos de retención o granularidad.

### **Herramientas y monitoreo**

* **Monitorización de cardinalidad:** Usa dashboards y herramientas como Grafana para identificar métricas y etiquetas que generan alta cardinalidad.
* **Limpieza regular de datos históricos:** Automatiza la eliminación de datos antiguos que ya no son relevantes para evitar que la cardinalidad siga creciendo innecesariamente.

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://darioaplicano.gitbook.io/influxdb2.x/sesion-1/guion-de-la-sesion/documentacion/conceptos-clave-de-influxdb/series-cardinales/impacto-de-la-cardinalidad-en-la-performance-de-las-consultas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
