

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.

# Suppression des plans de requêtes Aurora PostgreSQL
<a name="AuroraPostgreSQL.Optimize.Deleting"></a>

Supprimez les plans d’exécution que vous n’utilisez pas ou qui ne sont pas valides. Pour en savoir plus sur les la suppression des plans, consultez les sections suivantes.

**Topics**
+ [Suppression de plans](#AuroraPostgreSQL.Optimize.Maintenance.DeletingPlans)
+ [Validation des plans](#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans)

## Suppression de plans
<a name="AuroraPostgreSQL.Optimize.Maintenance.DeletingPlans"></a>

Les plans sont automatiquement supprimés s’ils n’ont pas été utilisés depuis plus d’un mois, plus précisément 32 jours. Il s’agit de la valeur par défaut du paramètre `apg_plan_mgmt.plan_retention_period`. Vous pouvez modifier la période de conservation du plan en la prolongeant ou en la raccourcissant à partir de la valeur 1. La détermination du nombre de jours depuis qu’un plan a été utilisé est calculée en soustrayant la date `last_used` de la date actuelle. La date `last_used` correspond à la date la plus récente à laquelle l’optimiseur a choisi un plan en tant que plan à coût minimal ou à laquelle le plan a été exécuté. La date est enregistrée pour le plan dans la vue `apg_plan_mgmt.dba_plans`. 

Nous vous recommandons de supprimer des plans qui n’ont pas été utilisés depuis longtemps ou qui ne sont pas utiles. Chaque plan possède une date `last_used` que l’optimiseur met à jour chaque fois qu’il exécute un plan ou le choisit en tant que plan à coût minimal pour une instruction. Vérifiez les dernières dates `last_used` pour identifier les plans que vous pouvez supprimer en toute sécurité.

La requête suivante renvoie une table à trois colonnes indiquant le nombre total de plans, les plans qui n’ont pas pu être supprimés et les plans supprimés avec succès. Elle comprend une requête imbriquée qui est un exemple d’utilisation de la fonction `apg_plan_mgmt.delete_plan` pour supprimer tous les plans qui n’ont pas été choisis en tant que plan à coût minimal au cours des 31 derniers jours et son statut n’est pas `Rejected`.

```
SELECT (SELECT COUNT(*) from apg_plan_mgmt.dba_plans) total_plans,
       COUNT(*) FILTER (WHERE result = -1) failed_to_delete,
       COUNT(*) FILTER (WHERE result = 0) successfully_deleted
       FROM (
            SELECT apg_plan_mgmt.delete_plan(sql_hash, plan_hash) as result
            FROM apg_plan_mgmt.dba_plans
            WHERE last_used < (current_date - interval '31 days')
            AND status <> 'Rejected'
            ) as dba_plans ;
```

```
 total_plans | failed_to_delete | successfully_deleted
-------------+------------------+----------------------
           3 |                0 |                    2
```

Pour plus d’informations, consultez [apg\$1plan\$1mgmt.delete\$1plan](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.delete_plan).

Pour supprimer des plans qui ne sont pas valides et dont vous pensez qu’ils le resteront, utilisez la fonction `apg_plan_mgmt.validate_plans`. Cette fonction vous permet de supprimer ou de désactiver des plans non valides. Pour plus d’informations, consultez [Validation des plans](#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans). 

**Important**  
Si vous ne supprimez pas les plans superflus, vous risquez de tomber à court de mémoire partagée mise de côté pour la gestion des plans de requêtes. Pour contrôler la quantité de mémoire disponible pour les plans gérés, utilisez le paramètre `apg_plan_mgmt.max_plans`. Définissez ce paramètre dans votre groupe de paramètres de votre base de données personnalisés, puis réinitialisez votre instance de base de données pour appliquer les modifications. Pour plus d’informations, consultez le paramètre [apg\$1plan\$1mgmt.max\$1plans](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.max_plans). 

## Validation des plans
<a name="AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans"></a>

Utilisez la fonction `apg_plan_mgmt.validate_plans` pour supprimer ou désactiver les plans non valides.

Des plans peuvent devenir non valides ou obsolètes en cas de suppression d’objets dont ils dépendent, tels qu’un index ou une table. Cependant, un plan peut devenir non valide de manière temporaire seulement si l’objet supprimé est recréé. Si un plan non valide est susceptible de redevenir valide plus tard, vous préférerez peut-être le désactiver ou ne rien faire plutôt que le supprimer. 

Pour retrouver et supprimer tous les plans qui sont non valides et qui n’ont pas été utilisés au cours de la semaine écoulée, utilisez la fonction `apg_plan_mgmt.validate_plans `comme suit.

```
SELECT apg_plan_mgmt.validate_plans(sql_hash, plan_hash, 'delete') 
FROM apg_plan_mgmt.dba_plans
WHERE last_used < (current_date - interval '7 days');
```

Pour activer ou désactiver directement un plan, utilisez la fonction `apg_plan_mgmt.set_plan_enabled`.