Todos los productos
Search
Centro de documentos

:Colas de recursos en ApsaraDB for ClickHouse

Última actualización: Sep 05, 2026

Este tema describe cómo utilizar las colas de recursos de ApsaraDB for ClickHouse.

Contexto

ClickHouse de código abierto no admite colas de recursos. Para consultar las restricciones sobre la complejidad de consultas en un clúster de ApsaraDB for ClickHouse versión V20.8 o posterior, consulte Restricciones sobre la complejidad de consultas.

Las colas de recursos son una función mejorada de ApsaraDB for ClickHouse y solo son compatibles con clústeres de ApsaraDB for ClickHouse versión V20.3. ClickHouse de código abierto proporciona un mecanismo de aislamiento de memoria a nivel de usuario. De forma predeterminada, la función de cola de recursos no se habilita al adquirir un clúster de ApsaraDB for ClickHouse.

Sintaxis de las colas de recursos

A continuación se muestra un ejemplo de sintaxis para gestionar colas de recursos:

-- Create a resource queue.
CREATE RESOURCE QUEUE [IF NOT EXISTS | OR REPLACE] name [ON CLUSTER cluster]
  * {[SET] MEMORY = {number}
  * [, CONCURRENCY = {number}]
  * [, PRIORITY = { LOWEST | LOW | NORMAL | HIGH | HIGHEST }]
  * [, ISOLATE = {number}]
    * }
  * [TO {role [,...] | ALL | ALL EXCEPT role [,...]}]

-- Modify a specified resource queue.
ALTER RESOURCE QUEUE [IF NOT EXISTS | OR REPLACE] name [ON CLUSTER cluster]
  * {[SET] MEMORY = {number}
  * [, CONCURRENCY = {number}]
  * [, PRIORITY = { LOWEST | LOW | NORMAL | HIGH | HIGHEST }]
  * [, ISOLATE = {number}]
    * }
  * [TO {role [,...] | ALL | ALL EXCEPT role [,...]}]  

-- Query a specified resource queue.
SHOW CREATE resource queue name

-- Query the resource queue that you are using.
SHOW CREATE resource queue current

-- Delete a specified resource queue.
DROP resource queue if exists name

Parámetros de definición:

  • MEMORY: tamaño del pool de memoria que se asignará a la cola de recursos que se va a crear. Si toda la memoria del nodo ya se asignó a colas de recursos existentes, no se podrá crear la nueva cola.

  • CONCURRENCY: número máximo de consultas simultáneas que admite la cola de recursos por crear. Valor predeterminado: 20. Si el número de consultas simultáneas en la cola supera este límite, las consultas adicionales se bloquean. Las subconsultas iniciadas por el sistema se cuentan como consultas simultáneas, pero no se bloquean. Por ejemplo, si el parámetro CONCURRENCY de una cola se establece en 20 y hay 25 subconsultas simultáneas iniciadas por el sistema, todas las consultas iniciadas por usuarios se bloquearán. Estas se procesarán únicamente cuando el número de subconsultas simultáneas del sistema sea inferior a 20.

  • PRIORITY: prioridades de la cola de recursos por crear. Este parámetro especifica las prioridades de programación de CPU y de apropiación de memoria.

  • ISOLATE: nivel de aislamiento de memoria de la cola de recursos por crear.

    • El valor predeterminado es 0, lo que indica que no se aplica aislamiento de memoria a la cola. Si el uso de memoria de una cola es bajo, otra cola con mayor prioridad puede apropiar temporalmente su memoria disponible cuando sea necesario.

    • Si establece este parámetro en 1, se aplica un aislamiento suave a la cola. En este caso, ninguna cola con mayor prioridad puede apropiar la memoria disponible de la cola creada.

    • Si establece este parámetro en 2, se aplica un aislamiento absoluto a la cola. En este escenario, ninguna cola con mayor prioridad puede apropiar la memoria disponible de la cola creada, y esta tampoco puede apropiar la memoria disponible de colas con menor prioridad.

  • role: usuarios a los que se vincula la cola de recursos creada. Especifique este parámetro con el formato To role [,...]. Las consultas enviadas por estos usuarios se enrutan a la cola creada. Si un usuario está vinculado a varias colas de recursos, el sistema enruta sus consultas a la cola con la prioridad más alta.

Parámetros de configuración:

  • target_resource_queue: cola de recursos a la que se enrutan las consultas enviadas por un usuario. También puede configurar un enrutamiento forzado para consultas en el archivo de perfil del usuario.

  • resource_queue_max_wait_ms: periodo de tiempo de espera para una consulta bloqueada en la cola debido al límite de concurrencia. El valor predeterminado es 10 segundos.

A continuación se presentan ejemplos de código para gestionar colas de recursos:

CREATE RESOURCE QUEUE IF NOT EXISTS test_queue ON CLUSTER cluster SET 
  MEMORY = 1073741824, CONCURRENCY = 20, ISOLATE = 0, PRIORITY = NORMAL 
    TO default;

CREATE RESOURCE QUEUE IF NOT EXISTS anonymous_queue ON CLUSTER cluster SET 
  MEMORY = 1073741824, CONCURRENCY = 20, ISOLATE = 1, PRIORITY = LOW;

SHOW CREATE resource queue test_queue;

SHOW CREATE resource queue current;

SELECT count (distinct intDiv(number, 10)) FROM numbers(100000) settings target_resource_queue='anonymous_queue';

DROP resource queue if exists test_queue;

DROP resource queue if exists anonymous_queue;

Consulta de información sobre colas de recursos

Para consultar todas sus colas de recursos, ejecute la siguiente instrucción:

show resource queues;

La siguiente tabla describe los parámetros incluidos en los resultados de la consulta.

Parámetro

Tipo de dato

Descripción

name

String

Nombre de la cola de recursos.

concurrency

UInt32

Número máximo de consultas simultáneas que admite la cola de recursos.

memory

UInt64

Tamaño del pool de memoria asignado a la cola de recursos. Unidad: bytes.

isolate

UInt8

Nivel de aislamiento de memoria de la cola de recursos.

priority

ENUM8

Prioridad de la cola de recursos.

roles

Array

Usuarios a los que está vinculada la cola de recursos.

Para consultar la información de uso de las consultas en una cola de recursos específica, ejecute la siguiente instrucción:

show resource queue stat [CURRENT | ALL];

La siguiente tabla describe los parámetros incluidos en los resultados de la consulta.

Parámetro

Tipo de dato

Descripción

name

String

Nombre de la cola de recursos.

running_query

UInt32

Número de consultas que se están ejecutando en la cola de recursos.

waiting_query

UInt32

Número de consultas en espera de ejecución dentro de la cola de recursos.

grabbing_query

UInt32

Número de consultas que están apropiando temporalmente la memoria disponible de la cola. Estas consultas no pertenecen a dicha cola.

allocated_memory

UInt64

Cantidad de memoria utilizada por las consultas que pertenecen a la cola de recursos. Unidad: bytes.

grabbed_memory

UInt64

Cantidad de memoria apropiada temporalmente por consultas que no pertenecen a la cola de recursos. Unidad: bytes.

free_memory

UInt64

Cantidad de memoria disponible en la cola de recursos. Unidad: bytes.

Errores posibles durante la ejecución de consultas en colas de recursos

  • **Una consulta agotó el tiempo de espera porque el número de consultas simultáneas superó el límite de concurrencia**

    • Código de error: 13005

    • Solución: Reduzca el número de consultas simultáneas en su cliente.

  • **El tamaño de memoria utilizado por consultas problemáticas supera el tamaño del pool de memoria**

    • Código de error: 241

    • Solución: Optimice el plan de consulta o aumente el tamaño del pool de memoria asignado a la cola de recursos.

  • **La cola de recursos especificada para el enrutamiento forzado de consultas no existe**

    • Código de error: 13006

    • Solución: Compruebe si se ha creado la cola de recursos especificada.

  • **Se finalizó una consulta que había apropiado temporalmente memoria de una cola de recursos con menor prioridad**

    • Código de error: 394

    • Solución: Reduzca el número de consultas simultáneas en la cola de recursos que utiliza y modifique la prioridad de dicha cola.