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.
Neptune prend en charge la collecte des déchets par dictionnaire (GC), qui peut être activée via le neptune_lab_mode
paramètre relatif aux données du graphe de propriétés. Il peut être activé pour les clusters contenant uniquement des données de graphes de propriétés lorsqu'il n'neptune_streams
est pas activé. La fonctionnalité est automatiquement désactivée si elle neptune_streams
est activée ou s'il existe des neptune_streams
données non expirées. La fonctionnalité nécessite le redémarrage d'une instance d'écriture pour être activée. Cette fonctionnalité est disponible à partir de la version 1.4.3.0 du moteur.
Lorsque cette option est activée, les entrées de dictionnaire inutilisées sont nettoyées par une tâche en arrière-plan. Il ne réduit pasVolumeBytesUsed
, mais libère de l'espace dans l'index pour les nouvelles insertions. Le taux de croissance 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 du dictionnaire s'exécute en arrière-plan et analyse toutes les données des graphes 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 changé. Il est confronté à des fils de requête pour les ressources du nœud principal telles que le processeur, le cache tampon, la génération de journaux d'annulation et les opérations d'E/S d'écriture, qui peuvent avoir un impact négatif sur le débit des requêtes. Comme GC analyse les données qui ne sont pas activement touchées par les requêtes, cela peut avoir un impact sur le cache tampon du nœud d'écriture. Le cluster peut subir des opérations d'E/S d'écriture supplémentaires et avoir davantage de journaux d'annulation à purger lorsque le 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 le fonctionnement en arrière-plan activé. Lorsque le mode activé 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.
Dictionary GC prend en charge une simultanéité maximale de 16 (sur les machines dotées de 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 threads GC du dictionnaire s'exécutent avec la même priorité que les fils de requête, et ils utilisent les ressources de l'auteur 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 la valeur DictionaryGCMode
sur soft_delete
:
neptune_lab_mode = 'DictionaryGCMode=soft_delete'
Le paramètre de simultanéité DictionaryGCConcurrency
est facultatif et peut prendre une valeur comprise entre 1 et 16. S'il est défini 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 fonctionne avec une simultanéité de 2. Si la tâche en arrière-plan est en cours d'exécution, il peut s'agir de rechercher activement les entrées de dictionnaire inutilisées et de les supprimer, ou d'attendre une nouvelle série de suppressions pour déclencher un nouveau cycle de GC.
"labMode":{"DictionaryGC":"{Mode=soft_delete,Concurrency=2}"}
Le dictionnaire GC est suspendu lorsque l'une des conditions suivantes est remplie :
-
Chargement en vrac actif.
-
La mémoire disponible est inférieure à 15 Go.
-
UndoLogListSize
est supérieur à 1 000 000.