Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Use the cache eviction feature

Dernière mise à jour :Aug 08, 2026

L'éviction du cache limite la quantité de métadonnées que chaque connexion persistante peut accumuler, évitant ainsi les erreurs de mémoire insuffisante (OOM) dans les charges de travail Software as a Service (SaaS) comportant un grand nombre de connexions persistantes. Cette fonctionnalité utilise la politique Least Recently Used (LRU) pour libérer les caches peu utilisés, réduisant l'utilisation de la mémoire par connexion et améliorant la stabilité de l'instance.

Prérequis

Avant de commencer, assurez-vous que :

  • Votre instance RDS exécute PostgreSQL 11 ou une version ultérieure

  • Si la fonctionnalité n'est pas encore disponible, mettez à jour la version mineure du moteur de votre instance. Pour plus d'informations, consultez la rubrique Mettre à jour la version mineure du moteur.

Contexte

Chaque fois qu'un processus backend PostgreSQL accède à une table, il met en cache les métadonnées de cette table dans la mémoire locale du processus. Ce cache n'est jamais libéré de manière proactive ; il s'accumule pendant toute la durée de vie de la connexion. Dans les charges de travail comportant de nombreuses connexions persistantes, cela peut épuiser la mémoire disponible et déclencher des erreurs OOM.

Cas d'utilisation

  • Applications SaaS qui maintiennent un grand nombre de connexions de base de données persistantes

Remarques d'utilisation

  • Certains caches ne peuvent pas être évincés afin de garantir le bon fonctionnement de l'instance. Dans des cas extrêmes, la limite de cache configurée peut ne pas être entièrement appliquée.

  • La modification des paramètres décrits dans cette rubrique ne déclenche pas le redémarrage de l'instance.

Concepts clés

ApsaraDB RDS for PostgreSQL gère trois types de caches de connexion :

Type de cache Contenu stocké Limite configurable
relcache Métadonnées des tables utilisateur Oui — rds_relcache_max_cached_relations
syscache Tuples des tables système Oui — rds_syscache_max_cached_tuples
plancache Plans d'exécution définis par l'utilisateur Non

Configurer l'éviction du cache

Pour la connexion actuelle

Exécutez les instructions SQL suivantes pour définir des limites uniquement pour la session actuelle.

-- Limit relcache to 1,000 user tables for the current connection
SET rds_relcache_max_cached_relations = 1000;

-- Remove the relcache limit for the current connection
SET rds_relcache_max_cached_relations = -1;

-- Limit syscache to 10,000 system table tuples for the current connection
SET rds_syscache_max_cached_tuples = 10000;

-- Remove the syscache limit for the current connection
SET rds_syscache_max_cached_tuples = -1;

Pour toutes les connexions

Définissez rds_relcache_max_cached_relations et rds_syscache_max_cached_tuples dans la console ApsaraDB RDS pour appliquer des limites à l'ensemble de l'instance. Pour plus d'informations, consultez la rubrique Modifier les paramètres d'une instance ApsaraDB RDS for PostgreSQL.

Surveiller l'utilisation du cache par processus

Pour surveiller l'utilisation du cache pour chaque connexion, installez l'extension rdsutils et activez le paramètre de surveillance du cache.

  1. Installez l'extension :

    CREATE EXTENSION rdsutils;
  2. Dans la console ApsaraDB RDS, définissez rds_enable_cache_monitor sur on. Vous pouvez modifier le paramètre rds_enable_cache_monitor uniquement dans la console ApsaraDB RDS. Pour plus d'informations, consultez la rubrique Modifier les paramètres d'une instance ApsaraDB RDS for PostgreSQL.

L'activation de rds_enable_cache_monitor ajoute environ 2 ms de surcharge par instruction SQL.

Paramètres

Paramètre Description Valeurs valides Par défaut Valeur minimale recommandée
rds_enable_cache_monitor Surveille l'utilisation du cache par connexion. on, off off —
rds_relcache_max_cached_relations Nombre maximal de tables utilisateur mises en cache par connexion. Définissez ce paramètre sur -1 pour désactiver la limite. Si vous utilisez des tables partitionnées ou l'extension timescaledb, définissez cette valeur sur -1 ou sur une valeur élevée. -1 à INT_MAX -1 (illimité) 1000
rds_syscache_max_cached_tuples Nombre maximal de tuples de tables système mis en cache par connexion. Définissez ce paramètre sur -1 pour désactiver la limite. Si vous utilisez des tables partitionnées ou l'extension timescaledb, définissez cette valeur sur -1 ou sur une valeur élevée. -1 à INT_MAX -1 (illimité) 5000
La définition de rds_relcache_max_cached_relations ou de rds_syscache_max_cached_tuples sur une valeur trop faible peut dégrader les performances des requêtes. Dimensionnez les limites en fonction du nombre de tables et de champs auxquels votre charge de travail accède. Si votre charge de travail accède à de nombreuses tables, utilisez une valeur plus élevée.