Tous les produits
Search
Centre de documentation

:Files de ressources dans ApsaraDB for ClickHouse

Dernière mise à jour :Aug 11, 2026

Cette rubrique explique comment utiliser les files de ressources d'ApsaraDB for ClickHouse.

Contexte

ClickHouse open source ne prend pas en charge les files de ressources. Pour connaître les restrictions relatives à la complexité des requêtes dans un cluster ApsaraDB for ClickHouse V20.8 ou ultérieur, consultez la page Restrictions on Query Complexity.

Les files de ressources constituent une fonctionnalité améliorée d'ApsaraDB for ClickHouse et sont prises en charge uniquement par les clusters ApsaraDB for ClickHouse V20.3. ClickHouse open source propose un mécanisme d'isolation de la mémoire au niveau utilisateur. Par défaut, la fonctionnalité de file de ressources n'est pas activée lors de l'achat d'un cluster ApsaraDB for ClickHouse.

Syntaxe des files de ressources

La syntaxe suivante illustre la gestion des files de ressources :

-- 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

Paramètres de définition :

  • MEMORY : taille du pool de mémoire à allouer à la file de ressources créée. Si toute la mémoire du nœud a déjà été attribuée aux files de ressources existantes, la création de la file de ressources échoue.

  • CONCURRENCY : nombre maximal de requêtes simultanées prises en charge par la file de ressources créée. La valeur par défaut est 20. Si le nombre de requêtes simultanées dans la file de ressources dépasse cette limite, les requêtes supplémentaires sont bloquées. Les sous-requêtes initiées par le système sont comptabilisées comme des requêtes simultanées, mais ne sont pas bloquées. Si le paramètre CONCURRENCY d'une file de ressources est défini sur 20 et que le nombre de sous-requêtes simultanées initiées par le système dans cette file est de 25, toutes les requêtes initiées par l'utilisateur sont bloquées. Le traitement des requêtes initiées par l'utilisateur reprend lorsque le nombre de sous-requêtes simultanées initiées par le système devient inférieur à 20.

  • PRIORITY : priorités de la file de ressources créée. Ce paramètre définit les priorités de planification du CPU et de préemption de la mémoire.

  • ISOLATE : niveau d'isolation de la mémoire de la file de ressources créée.

    • La valeur par défaut est 0, ce qui signifie qu'aucune isolation de la mémoire n'est mise en œuvre pour la file de ressources créée. Si l'utilisation de la mémoire d'une file de ressources est faible, une file de ressources ayant une priorité plus élevée peut temporairement préempter la mémoire disponible de cette file si nécessaire.

    • Si vous définissez ce paramètre sur 1, une isolation souple est appliquée à la file de ressources créée. Dans ce cas, une file de ressources ayant une priorité plus élevée ne peut pas préempter la mémoire disponible de la file de ressources créée.

    • Si vous définissez ce paramètre sur 2, une isolation absolue est appliquée à la file de ressources créée. Dans ce cas, une file de ressources ayant une priorité plus élevée ne peut pas préempter la mémoire disponible de la file de ressources créée. De même, la file de ressources créée ne peut pas préempter la mémoire disponible d'une file de ressources ayant une priorité inférieure.

  • role : utilisateurs auxquels la file de ressources créée est associée. Spécifiez ce paramètre au format To role [,...]. Les requêtes envoyées par ces utilisateurs sont acheminées vers la file de ressources créée. Si un utilisateur est associé à plusieurs files de ressources, le système achemine ses requêtes vers la file de ressources ayant la priorité la plus élevée.

Paramètres de configuration :

  • target_resource_queue : file de ressources vers laquelle les requêtes envoyées par un utilisateur sont acheminées. Vous pouvez également configurer un acheminement forcé pour les requêtes dans le fichier de profil de l'utilisateur.

  • resource_queue_max_wait_ms : délai d'expiration d'une requête bloquée dans la file de ressources en raison de la limite de simultanéité. La valeur par défaut est de 10 secondes.

L'exemple de code suivant illustre la gestion des files de ressources :

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;

Interrogation des informations sur les files de ressources

Pour interroger toutes vos files de ressources, exécutez l'instruction suivante :

show resource queues;

Le tableau suivant décrit les paramètres présents dans les résultats de la requête.

Parameter Data type Description
name String Nom de la file de ressources.
concurrency UInt32 Nombre maximal de requêtes simultanées prises en charge par la file de ressources.
memory UInt64 Taille du pool de mémoire alloué à la file de ressources. Unité : octets.
isolate UInt8 Niveau d'isolation de la mémoire de la file de ressources.
priority ENUM8 Priorité de la file de ressources.
roles Array Utilisateurs associés à la file de ressources.

Pour interroger les informations d'utilisation des requêtes dans une file de ressources spécifique, exécutez l'instruction suivante :

show resource queue stat [CURRENT | ALL];

Le tableau suivant décrit les paramètres présents dans les résultats de la requête.

Parameter Data type Description
name String Nom de la file de ressources.
running_query UInt32 Nombre de requêtes en cours d'exécution dans la file de ressources.
waiting_query UInt32 Nombre de requêtes en attente d'exécution dans la file de ressources.
grabbing_query UInt32 Nombre de requêtes préemptant temporairement la mémoire disponible de la file de ressources. Ces requêtes n'appartiennent pas à la file de ressources.
allocated_memory UInt64 Taille de la mémoire utilisée par les requêtes appartenant à la file de ressources. Unité : octets.
grabbed_memory UInt64 Taille de la mémoire temporairement préemptée par les requêtes n'appartenant pas à la file de ressources. Unité : octets.
free_memory UInt64 Taille de la mémoire disponible de la file de ressources. Unité : octets.

Erreurs susceptibles de se produire lors de l'exécution des requêtes dans les files de ressources

  • **Délai d'attente de la requête dépassé car le nombre de requêtes simultanées dépasse la limite de simultanéité**

    • Code d'erreur : 13005

    • Solution : réduisez le nombre de requêtes simultanées sur votre client.

  • **La taille de la mémoire utilisée par les requêtes défaillantes dépasse la taille du pool de mémoire**

    • Code d'erreur : 241

    • Solution : optimisez le plan de requête ou augmentez la taille du pool de mémoire alloué à la file de ressources.

  • **La file de ressources spécifiée vers laquelle les requêtes sont acheminées de force n'existe pas**

    • Code d'erreur : 13006

    • Solution : vérifiez que la file de ressources spécifiée a bien été créée.

  • **Une requête ayant temporairement préempté la mémoire d'une file de ressources de priorité inférieure est arrêtée**

    • Code d'erreur : 394

    • Solution : réduisez le nombre de requêtes simultanées dans la file de ressources que vous utilisez et modifiez sa priorité.