Tous les produits
Search
Centre de documentation

AnalyticDB:Use resource queues to perform workload management

Dernière mise à jour :Aug 10, 2026

Les files d'attente de ressources permettent de contrôler l'allocation du processeur et de la mémoire par AnalyticDB for PostgreSQL entre les charges de travail simultanées. En regroupant les requêtes dans des files dotées de limites et de priorités définies, vous évitez que la contention des ressources ne dégrade la latence des tâches sensibles lorsque le système est sollicité.

Prérequis

Avant de commencer, vérifiez que vous disposez des éléments suivants :

  • Une instance AnalyticDB for PostgreSQL

  • Un compte initial ou un compte privilégié disposant du rôle RDS_SUPERUSER

Sans les autorisations requises, les opérations sur les files d'attente échouent avec le message ERROR: must be superuser to alter resource queues . Pour accorder RDS_SUPERUSER à un rôle existant, exécutez : ALTER ROLE role_name WITH RDS_SUPERUSER;

Fonctionnement

Chaque file d'attente de ressources définit deux types de contrôles :

  • Contrôles d'admission — ACTIVE_STATEMENTS et MEMORY_LIMIT déterminent si une requête est admise dans la file ou placée en attente.

  • Contrôles d'exécution — PRIORITY détermine le partage du processeur entre les requêtes actives lors de l'exécution. Ce paramètre n'influe pas sur l'admission des requêtes.

Lors de la soumission d'une requête, AnalyticDB for PostgreSQL vérifie d'abord les contrôles d'admission. Si la file est saturée, la requête reste en attente. Une fois admise, la part de processeur allouée dépend de PRIORITY par rapport aux autres files actives.

ACTIVE_STATEMENTS limite le nombre de requêtes exécutées simultanément au sein d'une file. Cette limite est distincte du nombre de connexions à la base de données, géré indépendamment.

Créer une file d'attente de ressources

CREATE RESOURCE QUEUE name WITH (queue_attribute=value [, ...])

Vous devez spécifier au moins l'un des paramètres ACTIVE_STATEMENTS ou MAX_COST. L'omission des deux renvoie l'erreur suivante :

ERROR:  at least one threshold ("ACTIVE_STATEMENTS", "MAX_COST") must be specified

La création de files d'attente de ressources est impossible au sein d'un bloc de transaction :

ERROR:  CREATE RESOURCE QUEUE cannot run inside a transaction block

Paramètres

Paramètre Description Valeur par défaut
ACTIVE_STATEMENTS Nombre maximal de requêtes exécutées simultanément. Les requêtes supplémentaires restent en attente jusqu'à la libération d'un emplacement. —
MEMORY_LIMIT Mémoire maximale pour l'ensemble des requêtes actives combinées sur un seul nœud de calcul. Unités : Ko, Mo ou Go. -1 (illimité)
MAX_COST Coût maximal de la requête, tel qu'estimé par l'optimiseur. -1 (illimité)
COST_OVERCOMMIT Valide uniquement avec MAX_COST. TRUE : les requêtes dépassant MAX_COST s'exécutent lorsque la charge du système est faible. FALSE : ces requêtes sont rejetées. —
MIN_COST Les requêtes dont le coût est inférieur à ce seuil contournent la file et s'exécutent immédiatement. —
PRIORITY Part de processeur allouée à l'exécution par rapport aux autres files. Options : MIN, LOW, MEDIUM, HIGH, MAX. MEDIUM

Exemples

Limiter les requêtes simultanées :

CREATE RESOURCE QUEUE adhoc WITH (ACTIVE_STATEMENTS=3);

Ajouter une limite de mémoire :

CREATE RESOURCE QUEUE myqueue WITH (ACTIVE_STATEMENTS=20, MEMORY_LIMIT='2000MB');

Définir une priorité élevée :

CREATE RESOURCE QUEUE executive WITH (ACTIVE_STATEMENTS=3, PRIORITY=MAX);

Fonctionnement de la priorité du processeur

Lorsque des files d'attente de priorités différentes contiennent des requêtes actives, AnalyticDB for PostgreSQL répartit dynamiquement le processeur :

  • Les requêtes issues de files partageant la même priorité reçoivent des parts de processeur égales.

  • Lorsque des files à priorité haute, moyenne et basse sont toutes actives, la file haute priorité obtient 90 % du processeur. Les 10 % restants sont répartis ainsi : 90 % pour la priorité moyenne et 10 % pour la priorité basse.

Par exemple, si des requêtes de reporting (MEDIUM) sont en cours d'exécution et qu'une requête exécutive (MAX) devient active, AnalyticDB for PostgreSQL transfère immédiatement davantage de puissance de calcul vers la file exécutive et réduit la part allouée au reporting.

Remplacer la mémoire pour une seule requête

Utilisez statement_mem pour allouer plus de mémoire à une requête spécifique. La valeur doit être inférieure à la fois à MEMORY_LIMIT et à max_statement_mem.

SET statement_mem = '1GB';
SELECT * FROM test_adbpg WHERE col = 'adb4pg' ORDER BY id;
RESET statement_mem;

Instructions SQL soumises aux files d'attente de ressources

Par défaut, resource_select_only est défini sur off dans AnalyticDB for PostgreSQL. Les instructions suivantes sont donc toutes soumises aux files d'attente de ressources :

  • SELECT, SELECT INTO, CREATE TABLE AS SELECT, DECLARE CURSOR

  • INSERT, UPDATE, DELETE

Définissez resource_select_only sur on pour limiter la gestion des files d'attente aux seules instructions de type SELECT.

Affecter des utilisateurs à une file d'attente de ressources

Après avoir créé une file, affectez-y des utilisateurs. Chaque utilisateur appartient à une seule file d'attente de ressources.

-- Assign a queue when creating a role
CREATE ROLE analyst WITH LOGIN RESOURCE QUEUE reporting;

-- Reassign an existing role
ALTER ROLE analyst RESOURCE QUEUE executive;
Les utilisateurs non affectés à une file sont placés dans pg_default , qui autorise 500 requêtes actives simultanées sans limite de coût et avec une priorité MEDIUM.

Pour retirer un utilisateur d'une file d'attente de ressources et le renvoyer vers pg_default :

ALTER ROLE role_name RESOURCE QUEUE none;

Modifier une file d'attente de ressources

-- Change the active statement limit
ALTER RESOURCE QUEUE adhoc WITH (ACTIVE_STATEMENTS=5);

-- Change memory and cost limits
ALTER RESOURCE QUEUE adhoc WITH (MAX_COST=-1.0, MEMORY_LIMIT='2GB');

-- Change priority
ALTER RESOURCE QUEUE adhoc WITH (PRIORITY=LOW);
ALTER RESOURCE QUEUE reporting WITH (PRIORITY=HIGH);

Surveiller l'activité des files d'attente

Consultez la configuration d'une file d'attente spécifique :

SELECT * FROM pg_resqueue WHERE rsqname = 'adhoc';

Supprimer une file d'attente de ressources

DROP RESOURCE QUEUE name;
Il est impossible de supprimer une file si des utilisateurs lui sont assignés ou si des requêtes sont en attente. Retirez d'abord tous les utilisateurs de la file et purgez les requêtes en attente.

Dépannage

ERROR: must be superuser to alter resource queues

Cause : Le compte actuel ne dispose pas des autorisations suffisantes.

Solution : Utilisez un compte initial ou un compte privilégié doté du rôle RDS_SUPERUSER . Vous pouvez également accorder RDS_SUPERUSER au compte actuel :

ALTER ROLE role_name WITH RDS_SUPERUSER;