View a markdown version of this page

Utilisation du cache de forfait partagé - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation du cache de forfait partagé

Vue d’ensemble

Aurora PostgreSQL utilise un modèle de processus par utilisateur dans lequel chaque connexion client crée un processus principal dédié. Chaque processus principal gère son propre cache de plan local pour les instructions préparées. Comme ces caches ne peuvent pas être partagés entre les processus, les applications qui utilisent de nombreuses instructions préparées peuvent créer des caches dupliqués entre différents processus principaux, ce qui entraîne une utilisation accrue de la mémoire.

Les versions 17.6 et ultérieures d'Aurora PostgreSQL et 16.10 et versions ultérieures introduisent la fonctionnalité de cache de forfait partagé. Lorsque vous activez cette fonctionnalité, les processus principaux peuvent partager des plans génériques, ce qui réduit l'utilisation de la mémoire et améliore les performances en éliminant la génération de plans dupliqués.

Note

Babelfish pour Aurora PostgreSQL prend en charge le cache des forfaits partagés à partir des versions 4.10 et 5.6.

Le cache du plan partagé utilise les composants suivants comme clé de cache :

  • Chaîne de requête (y compris les commentaires)

  • Planner-related Paramètres GUC (y comprissearch_path)

  • ID de l’utilisateur

  • ID de base de données

Les redémarrages de l'instance réinitialisent le cache partagé.

Parameters

Le tableau suivant décrit les paramètres qui contrôlent la fonctionnalité de cache du plan partagé :

Paramètre Description Par défaut Autorisé
apg_shared_plan_cache.enable Active ou désactive le cache des forfaits partagés 0 (DÉSACTIVÉ) 0, 1
apg_shared_plan_cache.max Le nombre maximum d'entrées de cache 200 à 1 000 (en fonction de la taille de l'instance) 100 à 50 000
apg_shared_plan_cache.min_size_per_entry Taille minimale du forfait à stocker dans le cache partagé. Les forfaits plus petits utilisent le cache local pour optimiser les performances OLTP. 16 Ko 0—32768 (KO)
apg_shared_plan_cache.max_size_per_entry Taille maximale du forfait pour le cache partagé. Les forfaits plus importants ne stockent que les informations relatives aux coûts. 256 Ko à 4 Mo (selon la taille de l'instance) 0—32768 (KO)
apg_shared_plan_cache.idle_generic_plan_release_timeout Délai après lequel les sessions inactives publient les plans génériques locaux. Des valeurs plus faibles permettent d'économiser de la mémoire ; des valeurs plus élevées peuvent améliorer les performances. 10 secondes 0—2147483647 (ms)
Note

Vous pouvez modifier tous les paramètres sans redémarrer.

Vues et fonctions de surveillance

  • apg_shared_plan_cache()— Affiche des informations détaillées sur les entrées de cache (accès, validité, horodatages)

  • apg_shared_plan_cache_stat()— Affiche les statistiques au niveau de l'instance (expulsions, invalidations)

  • apg_shared_plan_cache_reset()— Supprime toutes les entrées dans apg_shared_plan_cache() et apg_shared_plan_cache_stat()

  • apg_shared_plan_cache_remove(cache_key)— Supprime une entrée apg_shared_plan_cache() dont elle correspond à cache_key

Limitations

  • Fonctionne uniquement avec les instructions préparées et ne met pas les PL/pgSQL instructions en cache

  • Ne met pas en cache une requête contenant des tables temporaires ou des tables de catalogue

  • Ne met pas en cache une requête qui dépend de RLS (Row-Level sécurité)

  • Chaque réplica gère son propre cache (pas de partage entre répliques)