# (Flux) Diagnóstico con Profiler

El *profiler* de Flux es un paquete incluido en el lenguaje de consultas Flux de InfluxDB 2.x que permite analizar y medir el rendimiento de las consultas ejecutadas sobre la base de datos. Su objetivo es proporcionar herramientas de *profiling* (perfilado) que ayudan a identificar cuellos de botella, optimizar el uso de recursos y entender cómo se comportan las consultas a nivel de ejecución.

### ¿Cómo funciona el profiler de Flux?

El profiler de Flux se activa importando el paquete `profiler` dentro de tu consulta y configurando la opción `profiler.enabledProfilers` con una lista de los perfiles que quieres activar. Los resultados del perfilado se devuelven como tablas adicionales junto con los resultados normales de la consulta, permitiéndote analizar métricas de rendimiento sin herramientas externas.

### Ejemplo práctico

{% code title="Flux" overflow="wrap" %}

```javascript
import "profiler"

option profiler.enabledProfilers = ["query", "operator"]

// Aquí iría tu consulta Flux, por ejemplo:
from(bucket: "mediciones_sensores")
  |> range(start: -1h)
  |> filter(fn: (r) => r["_measurement"] == "sensor01")
  |> yield(name: "resultados")
```

{% endcode %}

### Tipos de perfiles disponibles

El profiler de Flux ofrece principalmente dos tipos de perfiles:

<table><thead><tr><th width="114">Perfil</th><th>¿Qué mide?</th></tr></thead><tbody><tr><td><strong>query</strong></td><td><p>Estadísticas sobre la ejecución global del script Flux</p><ul><li><p>duración total:</p><ul><li>Tiempo total que tarda la consulta Flux en ejecutarse, desde que inicia hasta que termina.</li></ul></li><li><p>tiempo de compilación:</p><ul><li>Tiempo dedicado a convertir el script Flux en un plan de ejecución interno.</li></ul></li><li><p>planificación:</p><ul><li>Tiempo empleado en organizar y optimizar el plan de ejecución antes de procesar los datos.</li></ul></li><li><p>ejecución: </p><ul><li>Tiempo real dedicado a procesar y devolver los datos solicitados por la consulta.</li></ul></li><li><p>bytes asignados:</p><ul><li>Cantidad de memoria RAM utilizada durante la ejecución de la consulta.</li></ul></li><li><p>errores en tiempo de ejecución:</p><ul><li>Número de errores ocurridos mientras se ejecutaba la consulta.</li></ul></li><li><p>plan de consulta:</p><ul><li>Representación estructurada de cómo se ejecutará la consulta (qué operadores y en qué orden).</li></ul></li><li><p>valores/bytes escaneados:</p><ul><li>Número de valores individuales leídos de la base de datos para resolver la consulta.</li></ul></li></ul></td></tr><tr><td><strong>operator</strong></td><td><p>Estadísticas detalladas de cada operación de la consulta</p><ul><li><p>tipo:</p><ul><li>El tipo de operador Flux (por ejemplo, filter, map, aggregateWindow, etc.)</li></ul></li><li><p>nombre:</p><ul><li>Nombre específico del operador dentro de la consulta.</li></ul></li><li><p>cantidad de ejecuciones:</p><ul><li>Número de veces que se ejecuta ese operador durante la consulta.</li></ul></li><li><p>duración mínima/máxima/promedio</p><ul><li>tiempo que ha tardado una ejecución de ese operador</li></ul></li><li><p>suma de duraciones</p><ul><li>Suma total de los tiempos de ejecución de ese operador en todas sus ejecuciones.</li><li>Muy útil para ver qué parte de la consulta consume más recursos.</li></ul></li></ul></td></tr></tbody></table>

### Diferencias con InfluxDB 1.x

En InfluxDB 1.x no existe el profiler de Flux, ya que Flux no está integrado de forma nativa en esa versión (aunque se puede instalar como plugin experimental en 1.8.x).


---

# 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-5/guion-de-la-sesion/documentacion/diagnostico-de-problemas-en-influxdb/identificacion-de-cuellos-de-botella-en-consultas/flux-diagnostico-con-profiler.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.
