Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda> MapReduce Service> Preguntas frecuentes> Desarrollo del trabajo> ¿Cómo hago si se informa de una alarma que indica que la memoria es insuficiente cuando ejecuto una sentencia SQL en el cliente ClickHouse?
Actualización más reciente 2023-11-20 GMT+08:00

¿Cómo hago si se informa de una alarma que indica que la memoria es insuficiente cuando ejecuto una sentencia SQL en el cliente ClickHouse?

Síntoma

El cliente ClickHouse restringe la memoria utilizada por las sentencias GROUP BY. Cuando se ejecuta una sentencia SQL en el cliente ClickHouse, se muestra la siguiente información de error:

Progress: 1.83 billion rows, 85.31 GB (68.80 million rows/s., 3.21 GB/s.)        6%Received exception from server:
Code: 241. DB::Exception: Received from localhost:9000, 127.0.0.1. 
DB::Exception: Memory limit (for query) exceeded: would use 9.31 GiB (attempt to allocate chunk of 1048576 bytes), maximum: 9.31 GiB: 
(while reading column hits): 

Solución

  • Ejecute el siguiente comando antes de ejecutar una sentencia SQL a condición de que el clúster tenga suficiente memoria:
    SET max_memory_usage = 128000000000; #128G
  • Si no hay suficiente memoria disponible, el ClickHouse le permite desbordar los datos al disco para liberar la memoria: Se recomienda establecer el valor de max_memory_usage en el doble del tamaño de max_bytes_before_external_group_by.
    set max_bytes_before_external_group_by=20000000000; #20G
    set max_memory_usage=40000000000; #40G

Desarrollo del trabajo Preguntas frecuentes

more