> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Identificación de consultas costosas según el uso de memoria en ClickHouse

> Aprende a usar la tabla `system.query_log` para encontrar las consultas que más memoria consumen en ClickHouse, con ejemplos para configuraciones en clúster e independientes.

<div id="using-the-systemquery-log-table">
  ## Uso de la tabla `system.query_log`
</div>

La siguiente consulta muestra cuáles de las consultas que has ejecutado utilizaron más memoria.

Un par de comentarios sobre esta consulta:

* los resultados se calculan a partir del último día (`now() - toIntervalDay(1))`), pero puedes modificar fácilmente el intervalo de tiempo
* se asume que tienes un clúster llamado `default`, que es el nombre de tu clúster en [ClickHouse Cloud](https://console.clickhouse.cloud). Cambia `default` por el nombre de tu clúster
* si no tienes un clúster, consulta la consulta que aparece al final de este artículo

```sql theme={null}
SELECT
    count() as nb_query,
    user,
    query,
    sum(memory_usage) AS memory,
    normalized_query_hash
FROM
    clusterAllReplicas(default, system.query_log)
WHERE
    (event_time >= (now() - toIntervalDay(1)))
    AND is_initial_query = 1
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
```

La respuesta tiene este aspecto:

```response theme={null}
┌─nb_query─┬─user────┬─query─────────────────────────────────────────────────────────┬───memory─┬─normalized_query_hash─┐
│       11 │ default │ select version()                                              │ 46178924 │   7202516440347714159 │
│        2 │ default │ SELECT * FROM "system"."table_functions" LIMIT 31 OFFSET 0    │  8391544 │  12830067173062987695 │
└──────────┴─────────┴───────────────────────────────────────────────────────────────┴──────────┴───────────────────────┘
```

<Note>
  Si no tienes una tabla `system.query_log`, es probable que no tengas habilitado el registro de consultas. Consulta la [configuración `query_log`](/es/reference/settings/server-settings/settings/query#query_log) para ver cómo habilitarlo.
</Note>

<Note>
  **`query_log` contiene más que las consultas que enviaste**

  Una sola consulta enviada puede aparecer como varias filas: la consulta inicial (`is_initial_query = 1`) más pasos derivados o internos (`is_initial_query = 0`), como consultas secundarias para la ejecución distribuida o las consultas internas que se usan para evaluar vistas. Esas filas internas tienen sus propios valores de `query_id` —asignados por ClickHouse y, a veces, con una etiqueta como `queryView...`—, así que no des por hecho que cada `query_id` coincide con lo que informó tu client. Para atribuir el uso a la consulta tal como la ejecutaste, filtra por `is_initial_query = 1` o haz coincidir `query_id = initial_query_id`. Consulta [Cómo identificar las consultas más costosas](/es/resources/support-center/knowledge-base/performance-optimization/find-expensive-queries#initial_query_id-vs-query_id) y la [referencia de `query_log`](/es/reference/system-tables/query_log) para obtener más detalles.
</Note>

Si no tienes un clúster, puedes consultar directamente tu única tabla `system.query_log`:

```sql theme={null}
SELECT
    count() as nb_query,
    user,
    query,
    sum(memory_usage) AS memory,
    normalized_query_hash
FROM
    system.query_log
WHERE
    (event_time >= (now() - toIntervalDay(1)))
    AND is_initial_query = 1
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
```
