Utilisation du cache de plan 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 plan partagé

Présentation de

Aurora PostgreSQL utilise process-per-user un modèle 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 augmentation de l'utilisation 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 plan 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.

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

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

  • Paramètres GUC liés au planificateur (y compris) search_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 du forfait partagé 0 (DÉSACTIVÉ) 0, 1
apg_shared_plan_cache.max Le nombre maximum d'entrées de cache 200 à 1 000 (selon la taille de l'instance) 100—50 000
apg_shared_plan_cache.min_size_per_entry La taille minimale du plan à stocker dans le cache partagé. Les petits forfaits 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 plan pour le cache partagé. Les plans plus importants ne stockent que les informations sur les 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 des plans génériques locaux. Des valeurs faibles permettent d'économiser de la mémoire ; des valeurs élevées peuvent améliorer les performances. 10 secondes 0 — 2147483647 (ms)
Note

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

Surveillance des vues et des fonctions

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

  • 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 du protocole RLS (Row-Level Security)

  • Chaque réplique conserve son propre cache (pas de partage entre répliques)