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_pathID 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 dansapg_shared_plan_cache()etapg_shared_plan_cache_stat()apg_shared_plan_cache_remove(cache_key)— Supprime une entréeapg_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)