Gestion des statistiques pour le Neptune DFE à utiliser - 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.

Gestion des statistiques pour le Neptune DFE à utiliser

Note

La prise en Support d'OpenCypher dépend du moteur de requête DFE de Neptune.

Le moteur DFE a été disponible pour la première fois en mode laboratoire enVersion 1.0.3.0 du moteur Neptune, et en commençant parVersion 1.0.5.0 du moteur Neptune, il est devenu activé par défaut, mais uniquement pour être utilisé avec les indices de requête et pour le support d'OpenCrypher.

Commence parVersion 1.1.1.0 du moteur Neptunele moteur DFE n'est plus en mode laboratoire et est désormais contrôlé à l'aide duneptune_dfe_query_engineparamètre d'instance dans le groupe de paramètres de base de données d'une instance.

Le moteur DFE 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édicat qui peuvent guider la planification des requêtes.

Ces statistiques DFE 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 peuvent changer à l'future.

Vous pouvez gérer la génération des statistiques DFE via l'un des points de terminaison suivants :

  • https://your-neptune-host:port/sparql/statistics (pour SPARQL).

  • https://your-neptune-host:port/propertygraph/statistics(pour Gremlin et OpenCypher), et sa version alternative :https://your-neptune-host:port/pg/statistics.

Note

À partir deversion du moteur 1.1.1.0, le point de terminaison des statistiques de Gremlin (https://your-neptune-host:port/gremlin/statistics) est obsolète. Il est toujours pris en charge pour des raisons de rétrocompatibilité mais pourrait être supprimé dans les future versions.

Dans les exemples ci-dessous,$STATISTICS_ENDPOINTreprésente l'une de ces URL de point de terminaison.

Note

Si un point de terminaison de statistiques DFE se trouve sur une instance de lecteur, les seules demandes qu'il peut traiter sontdemandes de statut. Les autres demandes échoueront avecReadOnlyViolationException.

Note

La génération de statistiques est désactivée surT3etT4ginstances, car elle peut dépasser la capacité de mémoire de ces types d'instances.

Limites de taille pour la génération de statistiques DFE

Actuellement, la génération des statistiques DFE 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 statistiques du DFE

Vous pouvez vérifier l'état actuel des statistiques DFE à l'aide des éléments suivantscurlRequête :

curl -G "$STATISTICS_ENDPOINT"

La réponse à une demande de statut comporte les champs suivants :

  • status— le code de retour HTTP de la requête. Si la demande a réussi, le code est200. VoirErreurs courantespour obtenir la liste des erreurs courantes.

  • payload:

    • autoCompute— (Boolean) Indique si la génération automatique de statistiques est activée ou non.

    • active— (Boolean) Indique si la génération de statistiques DFE est activée ou non.

    • statisticsId — Indique l'ID de l'exécution de la génération de statistiques en cours. Une valeur de -1 indique qu'aucune statistique n'a été générée.

    • date— Heure UTC à laquelle les statistiques DFE ont été générées pour la dernière fois.

    • note— Une note sur les problèmes liés au cas où les statistiques ne sont pas valides.

    • summary— Contient des informations sur les ensembles de caractéristiques générés dans les statistiques. Ils ne sont généralement pas directement exploitables :

      • signatureCount— Le nombre total de signatures pour tous les ensembles de caractéristiques.

      • instanceCount— Le nombre total d'instances définies par des caractéristiques.

      • predicateCount— Nombre total de prédicats uniques.

La réponse à une demande de statut lorsqu'aucune statistique n'a été générée ressemble à ceci :

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }

Si les statistiques DFE sont disponibles, la réponse ressemble à ceci :

{ "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 statistiques DFE a échoué, par exemple parce qu'elles dépassaient laLimite de taille des, la réponse ressemble à ceci :

{ "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 des statistiques DFE est activée lorsque vous activez DFE.

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 réponse HTTP est200et la réponse est :

{ "status" : "200 OK" }

Vous pouvez confirmer que la génération automatique est désactivée en émettant undemande de statutet en vérifiant queautoComputele champ de la réponse est défini surfalse.

La désactivation de la génération automatique de statistiques ne met pas fin à un calcul de statistiques en cours.

Si vous demandez de désactiver la génération automatique sur une instance de lecteur plutôt que sur l'instance d'écriture de votre cluster de bases de données, la demande échoue avec un code de retour HTTP de 400 et génère le résultat suivant :

{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }

VoirErreurs courantespour obtenir la liste des autres erreurs courantes.

Réactivation de la génération automatique de statistiques DFE

Par défaut, la génération automatique des statistiques DFE est déjà activée lorsque vous activez DFE. 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 réponse HTTP est200et la réponse est :

{ "status" : "200 OK" }

Vous pouvez confirmer que la génération automatique est activée en émettant undemande de statutet en vérifiant queautoComputele champ de la réponse est défini surtrue.

Déclenchement manuel de la génération de statistiques DFE

Vous pouvez lancer la génération de statistiques DFE 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 retour HTTP de 200 :

{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }

Dans lastatisticsIddans la sortie se trouve l'identifiant de l'exécution de génération de statistiques en cours. Si une exécution était déjà en cours au moment de la demande, la demande renvoie l'identifiant de cette exécution plutôt que d'en lancer une nouvelle. Un seul cycle de génération de statistiques peut avoir lieu à la fois.

Si un basculement se produit alors que les statistiques DFE sont générées, le nouveau nœud d'écriture récupérera le dernier point de contrôle traité et reprendra l'exécution des statistiques à partir de là.

Utilisation deStatsNumStatementsScanned CloudWatch métrique pour surveiller le calcul des statistiques

Dans laStatsNumStatementsScanned CloudWatch Une métrique renvoie le nombre total d'instructions analysées pour le calcul des statistiques depuis le démarrage du serveur. Il est mis à jour à chaque tranche de calcul des statistiques.

Chaque fois qu'un calcul de statistiques est déclenché, ce nombre augmente, et lorsqu'aucun calcul n'est effectué, il reste constant. En regardant une parcelle deStatsNumStatementsScannedles valeurs au fil du temps vous donnent donc une idée assez claire de la date à laquelle le calcul des statistiques a eu lieu et de sa rapidité :

Graphique de StatsNumStatementsScanned valeurs des métriques

Lors du calcul, la pente du graphique indique la vitesse (plus la pente est raide, plus les statistiques sont calculées rapidement).

Si le graphique est simplement une ligne plate à 0, la fonction de statistiques a été activée, mais aucune statistique n'a été calculée. Si la fonction 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,StatsNumStatementsScannedn'existe pas.

Comme indiqué précédemment, vous pouvez désactiver le calcul des statistiques à l'aide de l'API des statistiques, mais si vous la désactivez, les statistiques ne seront pas à jour, ce qui peut entraîner une mauvaise génération de plans de requêtes pour le moteur DFE.

VoirSurveillance de Neptune à l'aide d'Amazon CloudWatchpour de plus amples informations sur l'utilisation d' CloudWatch.

A l'aide deAWS Identity and Access ManagementAuthentification IAM avec des points de terminaison de statistiques DFE

Vous pouvez accéder aux points de terminaison des statistiques DFE en toute sécurité grâce à l'authentification IAM en utilisantawscurlou tout autre outil qui fonctionne avec HTTP et IAM. Après avoir transmis votre clé d'accès et votre clé secrète, vous pouvez ensuite effectuer des demandes de statistiques DFE qui utilisent l'authentification IAM.

Par exemple, une demande de statut :

awscurl --service neptune-db "$STATISTICS_ENDPOINT"

Ou, par exemple, vous pouvez créer un fichier JSON nommérequest.jsonqui contient :

{ "mode" : "refresh" }

Vous pouvez ensuite lancer manuellement la génération de statistiques comme suit :

awscurl --service neptune-db "$STATISTICS_ENDPOINT" -X POST -d @request.json

Suppression des statistiques DFE

Vous pouvez supprimer toutes les statistiques de la base de données en envoyant une requête HTTP DELETE au point de terminaison des statistiques :

curl -X "DELETE" "$STATISTICS_ENDPOINT"

Les codes de retour HTTP valides sont les suivants :

  • 200— la suppression a été effectuée avec succès.

    Dans ce cas, une réponse typique ressemblerait à ceci :

    { "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 lecture,ReadOnlyViolationExceptionest jeté.

Codes d'erreur courants pour les demandes de statistiques DFE

Vous trouverez ci-dessous une liste des erreurs courantes qui peuvent se produire lorsque vous envoyez une demande à un point de terminaison de statistiques :

  • AccessDeniedExceptionCode de retour : 400.Message : Missing Authentication Token.

  • BadRequestException(pour Gremlin) —Code de retour : 400.Message : Bad route: /pg/statistics.

  • BadRequestException(pour SPARQL) —Code de retour : 400.Message : Bad route: /sparql/statistics.

  • InvalidParameterExceptionCode de retour : 400.Message : Statistics command parameter 'mode' has unsupported value 'the invalid value'.

  • MissingParameterExceptionCode de retour : 400.Message : Content-type header not specified..

  • ReadOnlyViolationExceptionCode de retour : 400.Message : Writes are not permitted on a read replica instance.

Par exemple, si vous faites une demande alors que le DFE et les statistiques ne sont pas activés, vous obtiendrez une réponse du type suivant :

{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }