Le cache de recherche Neptune peut accélérer les requêtes de lecture - 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.

Le cache de recherche Neptune peut accélérer les requêtes de lecture

Amazon Neptune implémente un cache de recherche qui utilise le SSD NVMe de l'R5dinstance pour améliorer les performances de lecture des requêtes comportant des recherches fréquentes et répétitives de valeurs de propriétés ou de littéraux RDF. Le cache de recherche stocke temporairement ces valeurs dans le volume SSD NVMe où elles sont rapidement accessibles.

Cette fonctionnalité est disponible à partir deMoteur Amazon Neptune Version 1.0.4.2.R2 (01/06/2021).

Les requêtes de lecture qui renvoient les propriétés d'un grand nombre de sommets et d'arêtes, ou de nombreux triplets RDF, peuvent avoir une latence élevée si les valeurs ou les littéraux des propriétés doivent être extraits des volumes de stockage du cluster plutôt que de la mémoire. Parmi les exemples, citons les requêtes de lecture de longue durée qui renvoient un grand nombre de noms complets à partir d'un graphe d'identité ou d'adresses IP à partir d'un graphe de détection de fraude. À mesure que le nombre de valeurs de propriétés ou de littéraux RDF renvoyés par votre requête augmente, la mémoire disponible diminue et l'exécution de votre requête peut se dégrader de manière significative.

Cas d'utilisation du cache de recherche Neptune

Le cache de recherche n'est utile que lorsque vos requêtes de lecture renvoient les propriétés d'un très grand nombre de sommets et d'arêtes, ou de triplets RDF.

Pour optimiser les performances des requêtes, Amazon Neptune utilise le type d'R5dinstance pour créer un cache volumineux pour ces valeurs ou littéraux de propriété. Leur extraction depuis le cache est alors beaucoup plus rapide que leur extraction depuis des volumes de stockage en cluster.

En règle générale, il ne vaut la peine d'activer le cache de recherche que si les trois conditions suivantes sont remplies :

  • Vous avez observé une latence accrue dans les requêtes de lecture.

  • Vous observez également une baisse de la BufferCacheHitRatio CloudWatch métrique lors de l'exécution de requêtes de lecture (voirSurveillance de Neptune à l'aide d'Amazon CloudWatch).

  • Vos requêtes de lecture passent beaucoup de temps à matérialiser les valeurs renvoyées avant d'afficher les résultats (voir l'exemple de profil Gremlin ci-dessous pour savoir comment déterminer le nombre de valeurs de propriétés matérialisées pour une requête).

Note

Cette fonctionnalité n'est utile que dans le scénario spécifique décrit ci-dessus. Par exemple, le cache de recherche ne facilite pas du tout les requêtes d'agrégation. À moins que vous n'exécutiez des requêtes qui bénéficieraient du cache de recherche, il n'y a aucune raison d'utiliser un type d'R5dinstance au lieu d'un type d'R5instance équivalent et moins coûteux.

Si vous utilisez Gremlin, vous pouvez évaluer les coûts de matérialisation d'une requête à l'aide du. API Gremlin profile Sous « Opérations indicielles », il indique le nombre de termes matérialisés lors de l'exécution :

Index Operations Query execution: # of statement index ops: 3 # of unique statement index ops: 3 Duplication ratio: 1.0 # of terms materialized: 5273 Serialization: # of statement index ops: 200 # of unique statement index ops: 140 Duplication ratio: 1.43 # of terms materialized: 32693

Le nombre de termes non numériques matérialisés est directement proportionnel au nombre de recherches de termes que Neptune doit effectuer.

Utilisation du cache de recherche

Le cache de recherche n'est disponible que sur un type d'R5dinstance, où il est automatiquement activé par défaut. Les R5d instances Neptune ont les mêmes spécifications que les R5 instances, plus jusqu'à 1,8 To de stockage SSD local basé sur NVMe. Les caches de recherche sont spécifiques aux instances, et les charges de travail qui en bénéficient peuvent être dirigées spécifiquement vers R5d les instances d'un cluster Neptune, tandis que les autres charges de travail peuvent être dirigées vers d'autres types d'instances ou vers d'autres types d'instances. R5

Pour utiliser le cache de recherche sur une instance Neptune, il suffit de mettre à niveau cette instance vers le type d'R5dinstance. Lorsque vous le faites, Neptune définit automatiquement le paramètre du neptune_lookup_cache cluster de base de 'enabled' données sur et crée le cache de recherche sur cette instance particulière. Vous pouvez ensuite utiliser l'Statut d’une instanceAPI pour confirmer que le cache a été activé.

De même, pour désactiver le cache de recherche sur une instance donnée, réduisez l'instance d'un type d'R5dinstance à un type d'R5instance équivalent.

Lorsqu'une R5d instance est lancée, le cache de recherche est activé et en mode démarrage à froid, ce qui signifie qu'il est vide. Neptune vérifie d'abord dans le cache de recherche les valeurs de propriétés ou les littéraux RDF lors du traitement des requêtes, puis les ajoute s'ils ne sont pas encore présents. Cela réchauffe progressivement le cache.

Lorsque vous dirigez les requêtes de lecture qui nécessitent des recherches de valeur de propriété ou de littéral RDF vers une instance de lecteur R5d, les performances de lecture se dégradent légèrement pendant le préchauffage de son cache. Cependant, lorsque le cache est réchauffé, les performances de lecture s'accélèrent de manière significative et vous pouvez également constater une baisse des coûts d'E/S liée aux recherches effectuées dans le cache plutôt qu'au stockage en cluster. L'utilisation de la mémoire s'améliore également.

Si votre instance d'écriture est uneR5d, elle réchauffe automatiquement son cache de recherche à chaque opération d'écriture. Cette approche augmente légèrement le temps de latence pour les requêtes d'écriture, mais réchauffe le cache de recherche de manière plus efficace. Ensuite, si vous dirigez les requêtes de lecture qui nécessitent des recherches de valeur de propriété ou de littéral RDF vers l'instance du rédacteur, vous commencez immédiatement à obtenir des performances de lecture améliorées, car les valeurs y ont déjà été mises en cache.

En outre, si vous exécutez le chargeur en bloc sur une instance d'R5décriture, vous remarquerez peut-être que ses performances sont légèrement dégradées à cause du cache.

Le cache de recherche étant spécifique à chaque nœud, le remplacement de l'hôte réinitialise le cache à froid.

Vous pouvez désactiver temporairement le cache de recherche sur toutes les instances de votre cluster de base de données en définissant le paramètre de neptune_lookup_cache cluster de base de données sur'disabled'. En général, toutefois, il est plus judicieux de désactiver le cache sur des instances spécifiques en les réduisant de deux types R5d d'R5instance.