View a markdown version of this page

Collecte des déchets du dictionnaire Neptune - Amazon Neptune

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

Neptune prend en charge la collecte des déchets par dictionnaire (GC), qui peut être activée via le neptune_lab_mode paramètre 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 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 pasVolumeBytesUsed, 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 etenabled. 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 en réglant la DictionaryGCMode clé. Il accepte trois valeurs possibles : disabled (par défaut)soft_delete, ouenabled. 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 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.

  • UndoLogListSizeest supérieur à 1 000 000.