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.
Gestion des statistiques destinées à être utilisées par le Neptune DFE
Note
Support pour openCypher dépend du moteur de DFE requête de Neptune.
Le DFE moteur a d'abord été disponible en mode laboratoire dans la version 1.0.3.0 du moteur Neptune, et à partir de la version 1.0.5.0 du moteur Neptune, il a été activé par défaut, mais uniquement pour être utilisé avec des conseils de requête et pour l'assistance. openCypher
À partir de la version 1.1.1.0 du moteur Neptune, le DFE moteur n'est plus en mode laboratoire et est désormais contrôlé à l'aide du paramètre d'neptune_dfe_query_engineinstance dans le groupe de paramètres de base de données d'une instance.
Le DFE moteur utilise les informations relatives aux données de votre graphe Neptune pour faire des compromis efficaces lors de la planification de l'exécution des requêtes. Ces informations prennent la forme de statistiques qui incluent ce que l'on appelle des ensembles de caractéristiques et des statistiques de prédicats qui contribuent à guider la planification des requêtes.
À partir de la version 1.2.1.0 du moteur, vous pouvez récupérer des informations récapitulatives sur votre graphique à partir de ces statistiques à l'aide du point de terminaison GetGraphSummaryAPIou du summary
point de terminaison.
Ces DFE statistiques sont actuellement régénérées chaque fois que plus de 10 % des données de votre graphique ont changé ou lorsque les dernières statistiques datent de plus de 10 jours. Cependant, ces déclencheurs pourraient changer à l'avenir.
Note
La génération de statistiques est désactivée sur les instances T3
et T4g
, car elle peut dépasser la capacité de mémoire de ces types d'instances.
Vous pouvez gérer la génération de DFE statistiques via l'un des points de terminaison suivants :
https://
(pourSPARQL).your-neptune-host
:port
/rdf/statisticshttps://
(pour G705 etopenCypher), et sa version alternative :your-neptune-host
:port
/propertygraph/statisticshttps://
.your-neptune-host
:port
/pg/statistics
Note
Depuis la version 1.1.1.0 du moteur, le point de terminaison de statistiques Gremlin (https://
) est obsolète et a été remplacé par le point de terminaison your-neptune-host
:port
/gremlin/statisticspropertygraph
ou pg
. Il reste pris en charge pour des raisons de rétrocompatibilité, mais il pourrait être supprimé dans les futures versions.
Depuis la version 1.2.1.0 du moteur, le point de terminaison SPARQL des statistiques (https://
) est obsolète au profit du point de terminaison. your-neptune-host
:port
/sparql/statisticsrdf
Il reste pris en charge pour des raisons de rétrocompatibilité, mais il pourrait être supprimé dans les futures versions.
Dans les exemples ci-dessous, $STATISTICS_ENDPOINT
représente l'un de ces points de terminaisonURLs.
Note
Si un point de terminaison de DFE statistiques se trouve sur une instance de lecteur, les seules demandes qu'il peut traiter sont les demandes de statut. Les autres demandes échoueront avec une exception ReadOnlyViolationException
.
Limites de taille pour la DFE génération de statistiques
Actuellement, la génération de DFE statistiques s'arrête si l'une des limites de taille suivantes est atteinte :
Le nombre d'ensembles de caractéristiques générés ne doit pas dépasser 50 000.
Le nombre de statistiques de prédicat générées ne doit pas dépasser un million.
Ces limites sont susceptibles de changer.
État actuel des DFE statistiques
Vous pouvez vérifier l'état actuel des DFE statistiques à l'aide de la curl
demande suivante :
curl -G "$STATISTICS_ENDPOINT"
La réponse à une demande de statut comporte les champs suivants :
status
— le code de HTTP retour de la demande. Si la demande aboutit, le code est200
. Pour obtenir une liste des erreurs courantes, consultez Erreurs courantes.-
payload
:autoCompute
: (valeur booléenne) indique si la génération automatique des statistiques est activée ou non.active
— (Boolean) Indique si la génération de DFE statistiques est activée ou non.statisticsId
: indique l'ID de la génération de statistiques en cours d'exécution. La valeur-1
indique qu'aucune statistique n'a été générée.-
date
— UTC Heure à laquelle les DFE dernières statistiques ont été générées, au format ISO 8601.Note
Avant la version 1.2.1.0 du moteur, elle était représentée avec une précision à la minute, mais depuis la version 1.2.1.0 du moteur, elle est représentée avec une précision à la milliseconde (par exemple,
2023-01-24T00:47:43.319Z
). note
: remarque concernant les problèmes liés à la non-validité des statistiques.-
signatureInfo
: contient des informations sur les ensembles de caractéristiques générés dans les statistiques (avant la version 1.2.1.0 du moteur, ce champ était nommésummary
). Elles ne sont généralement pas directement exploitables :signatureCount
: nombre total de signatures pour tous les ensembles de caractéristiques.instanceCount
: nombre total d'instances d'ensembles de caractéristiques.predicateCount
: nombre total de prédicats uniques.
La réponse à une demande de statut quand aucune statistique n'a été générée ressemble à ceci :
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }
Si DFE des statistiques sont disponibles, la réponse se présente comme suit :
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }
Si la génération des DFE statistiques a échoué, par exemple parce qu'elle a dépassé la limite de taille des statistiques, la réponse est la suivante :
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }
Désactiver la génération automatique de statistiques DFE
Par défaut, la génération automatique de DFE statistiques est activée lorsque vous l'activezDFE.
Vous pouvez désactiver la génération automatique comme suit :
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'
Si la demande aboutit, le code de HTTP réponse est 200
et la réponse sont :
{ "status" : "200 OK" }
Pour confirmer que la génération automatique est désactivée, émettez une demande de statut et vérifiez que le champ autoCompute
de la réponse est défini sur false
.
La désactivation de la génération automatique des statistiques ne met pas fin à un calcul de statistiques en cours.
Si vous demandez de désactiver la génération automatique vers une instance de lecteur plutôt que vers l'instance d'écriture de votre cluster de base de données, la demande échoue avec un code de HTTP retour de 400 et le résultat est le suivant :
{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }
Pour obtenir une liste des autres erreurs courantes, consultez Erreurs courantes.
Réactivation de la génération automatique de statistiques DFE
Par défaut, la génération automatique de DFE statistiques est déjà activée lorsque vous l'activezDFE. Si vous désactivez la génération automatique, vous pouvez la réactiver ultérieurement comme suit :
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'
Si la demande aboutit, le code de HTTP réponse est 200
et la réponse sont :
{ "status" : "200 OK" }
Pour confirmer que la génération automatique est activée, émettez une demande de statut et vérifiez que le champ autoCompute
de la réponse est défini sur true
.
Déclenchement manuel de la génération de DFE statistiques
Vous pouvez lancer la génération de DFE statistiques manuellement comme suit :
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'
Si la demande aboutit, le résultat est le suivant, avec un code de HTTP retour de 200 :
{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }
Le statisticsId
dans la sortie contient l'ID de l'exécution de la génération de statistiques en cours. Si une exécution était déjà en cours au moment de la demande, cette demande renvoie l'ID de cette exécution plutôt que d'en lancer une nouvelle. Une seule génération de statistiques peut avoir lieu à la fois.
En cas de basculement lors de la génération des DFE statistiques, le nouveau nœud d'écriture reprendra le dernier point de contrôle traité et reprendra l'exécution des statistiques à partir de là.
Utilisation de la StatsNumStatementsScanned
CloudWatch métrique pour surveiller le calcul des statistiques
La StatsNumStatementsScanned
CloudWatch métrique renvoie le nombre total d'instructions analysées pour le calcul des statistiques depuis le démarrage du serveur. Elle est mise à jour à chaque tranche de calcul des statistiques.
Chaque fois que le calcul des statistiques est déclenché, ce nombre augmente. Quand aucun calcul n'est effectué, il reste constant. L'examen d'un diagramme de valeurs StatsNumStatementsScanned
au fil du temps donne donc une idée assez claire de la date et de la rapidité du calcul des statistiques :
![Graphique des valeurs StatsNumStatementsScanned métriques](images/StatsNumStatementsScanned-graph.png)
Lorsque le calcul est en cours, la pente du graphe indique la vitesse (plus la pente est raide, plus les statistiques sont calculées rapidement).
Si le graphe est simplement une ligne plate à 0, la fonctionnalité de statistiques a été activée, mais aucune statistique n'a été calculée. Si la fonctionnalité de statistiques a été désactivée ou si vous utilisez une version du moteur qui ne prend pas en charge le calcul des statistiques, StatsNumStatementsScanned
n'existe pas.
Comme indiqué précédemment, vous pouvez désactiver le calcul des statistiques à l'aide des statistiquesAPI, mais le fait de ne pas le faire peut entraîner la non-mise à jour des statistiques, ce qui peut entraîner une mauvaise génération du plan de requête pour le DFE moteur.
Surveillance de Neptune à l'aide d'Amazon CloudWatchReportez-vous à la section pour plus d'informations sur son utilisation CloudWatch.
Utilisation de l'authentification AWS Identity and Access Management (IAM) avec des points de terminaison DFE statistiques
Vous pouvez accéder aux points de terminaison des DFE statistiques en toute sécurité grâce à l'IAMauthentification à l'aide d'awscurl
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db
Ou, par exemple, vous pouvez créer un JSON fichier nommé request.json
contenant :
{ "mode" : "refresh" }
Vous pouvez ensuite lancer manuellement la génération de statistiques comme suit :
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db \ -X POST -d @request.json
Supprimer des DFE statistiques
Vous pouvez supprimer toutes les statistiques de la base de données en adressant une HTTP DELETE demande au point de terminaison des statistiques :
curl -X "DELETE" "$STATISTICS_ENDPOINT"
Les codes de HTTP retour valides sont les suivants :
-
200
: la suppression a été effectuée avec succès.Dans ce cas, une réponse typique ressemblerait à ce qui suit :
{ "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
-
204
: il n'y avait aucune statistique à supprimer.Dans ce cas, la réponse est vide (aucune réponse).
Si vous envoyez une demande de suppression à un point de terminaison de statistiques sur un nœud de lecteur, une exception ReadOnlyViolationException
est renvoyée.
Codes d'erreur courants pour les demandes de DFE statistiques
Voici une liste des erreurs courantes qui peuvent survenir lorsque vous envoyez une demande à un point de terminaison de statistiques :
AccessDeniedException
– Code de retour :400
. Message :Missing Authentication Token
.BadRequestException
(pour Gkremlin etopenCypher) — Code de retour :400
. Message :Bad route: /pg/statistics
.BadRequestException
(pour les RDF données) — Code de retour :400
. Message :Bad route: /rdf/statistics
.InvalidParameterException
– Code de retour :400
. Message :Statistics command parameter 'mode' has unsupported value '
.the invalid value
'MissingParameterException
– Code de retour :400
. Message :Content-type header not specified.
.ReadOnlyViolationException
– Code de retour :400
. Message :Writes are not permitted on a read replica instance
.
Par exemple, si vous faites une demande alors que les statistiques DFE et ne sont pas activées, vous obtiendrez une réponse comme celle-ci :
{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }