

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.

# Collecte des déchets du dictionnaire Neptune
<a name="storage-gc"></a>

 Neptune prend en charge la collecte des déchets par dictionnaire (GC), qui peut être activée via le `neptune_lab_mode` [ paramètre ](parameters.md) des données du graphe de propriétés. La fonctionnalité nécessite le redémarrage de l'instance Writer pour être activée. Cette fonctionnalité est disponible à partir de la version [https://docs.aws.amazon.com/releases/release-1.4.3.0.xml](https://docs.aws.amazon.com/releases/release-1.4.3.0.xml) 1.4.3.0 du moteur. 

**Compatibilité avec les versions de moteurs antérieures à la version 1.4.8.0**  
 Avant la version 1.4.8.0 du moteur, vous pouviez activer le dictionnaire GC uniquement sur les clusters non `neptune_streams` activés. Neptune a automatiquement désactivé la fonctionnalité si elle `neptune_streams` était activée. Neptune a également désactivé la fonctionnalité s'il existait des `neptune_streams` données non expirées. À partir de la version 1.4.8.0 du moteur, cette restriction ne s'applique plus et vous pouvez activer le dictionnaire GC sur les clusters qui l'ont `neptune_streams` activé. 

 Lorsque cette option est activée, les entrées de dictionnaire non utilisées sont nettoyées par une tâche en arrière-plan. Cela ne réduit pas`VolumeBytesUsed`, mais libère de l'espace dans l'index pour les nouvelles insertions. Le taux de croissance de `VolumeBytesUsed` est susceptible d'être inférieur lorsque le dictionnaire GC est activé par rapport à lorsqu'il ne l'est pas. 

 La collecte des déchets des dictionnaires s'exécute en arrière-plan et analyse toutes les données des graphiques et des dictionnaires pour trouver les termes qui ne sont pas utilisés. Une nouvelle exécution est déclenchée au démarrage dès qu'environ 6 % des données ont été modifiées. GC est en concurrence avec les threads de requête pour les ressources du serveur telles que le processeur, le cache de la mémoire tampon, la génération de journaux d'annulation et les I/O opérations d'écriture, ce qui peut réduire le débit des requêtes. Étant donné que GC analyse les données qui ne sont pas activement touchées par les requêtes, cela peut avoir un impact sur le cache de la mémoire tampon sur le nœud d'écriture. Le cluster pourrait subir des I/O opérations d'écriture supplémentaires et avoir davantage de journaux d'annulation à purger au fur et à mesure que GC effectue de nouvelles suppressions, ce qui peut également entraîner des valeurs plus élevées pour la `UndoLogListSize` métrique. 

 GC peut être exécuté en deux modes, `soft_delete` et`enabled`. Lorsqu'elles sont exécutées dans ce `soft_delete` mode, les entrées de dictionnaire non utilisées sont marquées comme supprimées (soft\_delete) mais ne sont pas supprimées explicitement. Ce mode peut également être utilisé pour comprendre les caractéristiques de performance une fois l'opération en arrière-plan activée. Lorsque le `enabled` mode est utilisé, les entrées sont explicitement supprimées (suppression « dure »). Il est recommandé d'exécuter GC en `soft_delete` mode pendant un certain temps avant de passer `enabled` en mode. 

 Le dictionnaire GC prend en charge une simultanéité maximale de 16 (sur les machines avec 16 cœurs ou plus). Il s'exécute par défaut avec un seul thread, mais il peut être exécuté avec une plus grande simultanéité lorsqu'il est activé pour la première fois. Les fils GC du dictionnaire s'exécutent avec la même priorité que les fils de requête, et ils sont en concurrence avec les ressources du rédacteur de la même manière. 

 Le dictionnaire GC peut être activé via le `neptune_lab_mode` [ paramètre ](parameters.md) en réglant la `DictionaryGCMode` clé. Il accepte trois valeurs possibles : `disabled` (par défaut)`soft_delete`, ou`enabled`. Par exemple, l'exemple de code suivant définirait le paramètre `DictionaryGCMode` sur `soft_delete` : 

```
neptune_lab_mode = 'DictionaryGCMode=soft_delete'
```

 Le [ paramètre ](parameters.md) de concurrence est facultatif et peut prendre une valeur comprise entre 1 et 16. `DictionaryGCConcurrency` Si elle est définie sur une valeur supérieure au minimum de 16 et au nombre de cœurs, la simultanéité est plafonnée à cette valeur. 

```
neptune_lab_mode = 'DictionaryGCMode=soft_delete,DictionaryGCConcurrency=2'
```

 La tâche GC du dictionnaire est activée en arrière-plan après le démarrage du serveur, une fois que certaines données sont disponibles. L'état du moteur affiche l'état actuel du dictionnaire GC. L'exemple de sortie ci-dessous montre que le dictionnaire GC est en `soft_delete` mode et s'exécute avec une simultanéité de 2. Si la tâche d'arrière-plan est en cours d'exécution, elle peut rechercher activement les entrées de dictionnaire inutilisées et les supprimer, ou attendre une nouvelle série de suppressions pour déclencher une nouvelle série de GC. 

```
{"status":"healthy",...,"labMode":{"ObjectIndex":"disabled","DictionaryGC":"{Mode=enabled,Concurrency=2}"},...}
```

 Le dictionnaire GC est suspendu lorsque l'une de ces conditions est remplie : 
+  Chargement en vrac actif. 
+  La mémoire libérable est inférieure à 15 Go. 
+  `UndoLogListSize`est supérieur à 1 000 000. 