Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Gestione delle statistiche per l'utilizzo di DFE Neptune
Nota
Il supporto per openCypher dipende dal motore di DFE query di Neptune.
Il DFE motore era disponibile per la prima volta in modalità lab nella versione 1.0.3.0 del motore Neptune e, a partire dalla versione 1.0.5.0 del motore Neptune, è diventato abilitato per impostazione predefinita, ma solo per l'uso con suggerimenti di query e per il supporto. openCypher
A partire dalla versione 1.1.1.0 del motore Neptune, DFE il motore non è più in modalità lab ed è ora controllato utilizzando neptune_dfe_query_engine il parametro instance nel gruppo di parametri DB di un'istanza.
Il DFE motore utilizza le informazioni sui dati nel grafico di Neptune per ottenere compromessi efficaci durante la pianificazione dell'esecuzione delle query. Queste informazioni assumono la forma di statistiche che includono i cosiddetti insiemi di caratteristiche, nonché statistiche sui predicati utili per la pianificazione delle query.
A partire dalla versione 1.2.1.0 del motore, è possibile recuperare informazioni di riepilogo sul grafico da queste statistiche utilizzando l'endpoint o. GetGraphSummaryAPIsummary
Queste DFE statistiche vengono attualmente rigenerate ogni volta che più del 10% dei dati nel grafico è cambiato o quando le statistiche più recenti risalgono a più di 10 giorni fa. Tuttavia, questi trigger potrebbero cambiare in futuro.
Nota
La generazione di statistiche è disabilitata nelle istanze T3
e T4g
in quanto può superare la capacità di memoria di tali tipi di istanze.
Puoi gestire la generazione di DFE statistiche tramite uno dei seguenti endpoint:
https://
(perSPARQL).your-neptune-host
:port
/rdf/statisticshttps://
(per Gremlin eopenCypher), e la sua versione alternativa:.your-neptune-host
:port
/propertygraph/statisticshttps://
your-neptune-host
:port
/pg/statistics
Nota
A partire dal rilascio 1.1.1.0 del motore, l'endpoint delle statistiche Gremlin (https://
) è stato deprecato a favore dell'endpoint your-neptune-host
:port
/gremlin/statisticspropertygraph
o pg
. È ancora supportato per la compatibilità con le versioni precedenti, ma potrebbe essere rimosso nei rilasci futuri.
A partire dalla versione 1.2.1.0 del motore, l'endpoint delle SPARQL statistiche (https://
) è diventato obsoleto a favore dell'endpoint. your-neptune-host
:port
/sparql/statisticsrdf
È ancora supportato per la compatibilità con le versioni precedenti, ma potrebbe essere rimosso nei rilasci futuri.
Negli esempi seguenti, indica uno qualsiasi di questi endpoint$STATISTICS_ENDPOINT
. URLs
Nota
Se un endpoint di DFE statistica si trova su un'istanza di lettura, le uniche richieste che può elaborare sono le richieste di stato. Le altre richieste avranno esito negativo con ReadOnlyViolationException
.
Limiti di dimensione per la generazione di DFE statistiche
Attualmente, la generazione DFE delle statistiche si interrompe se viene raggiunto uno dei seguenti limiti di dimensione:
Il numero di set di caratteristiche generati non può superare 50.000.
Il numero di statistiche sui predicati generate non può superare un milione.
Questi limiti possono cambiare.
Stato attuale delle statistiche DFE
È possibile controllare lo stato attuale delle DFE statistiche utilizzando la seguente curl
richiesta:
curl -G "$STATISTICS_ENDPOINT"
La risposta a una richiesta di status include i seguenti campi:
status
— il codice di HTTP ritorno della richiesta. Se la richiesta è riuscita, il codice è200
. Per visualizzare un elenco di errori comuni, consulta Errori comuni.-
payload
:autoCompute
: (booleano) indica se la generazione automatica di statistiche è abilitata o meno.active
— (Boolean) Indica se la generazione di DFE statistiche è abilitata o meno.statisticsId
: riporta l'ID dell'esecuzione corrente della generazione delle statistiche. Il valore-1
indica che non sono state generate statistiche.-
date
— L'UTCora in cui DFE le statistiche sono state generate più di recente, nel formato ISO 8601.Nota
Prima del rilascio 1.2.1.0 del motore, questo valore era rappresentato con precisione al minuto, ma dal rilascio 1.2.1.0 in poi, viene rappresentato con precisione al millisecondo (ad esempio,
2023-01-24T00:47:43.319Z
). note
: una nota sui problemi nel caso in cui le statistiche non siano valide.-
signatureInfo
: contiene informazioni sui set di caratteristiche generati nelle statistiche (prima del rilascio 1.2.1.0 del motore, questo campo era denominatosummary
). In genere non sono direttamente utilizzabili:signatureCount
: numero totale di firme in tutti i set di caratteristiche.instanceCount
: numero totale di istanze di set di caratteristiche.predicateCount
: numero totale di predicati univoci.
La risposta a una richiesta di stato quando non sono state generate statistiche è simile alla seguente:
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }
Se DFE le statistiche sono disponibili, la risposta è simile alla seguente:
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }
Se la generazione delle DFE statistiche non è riuscita, ad esempio perché ha superato il limite di dimensione delle statistiche, la risposta è simile alla seguente:
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }
Disattivazione della generazione automatica di statistiche DFE
Per impostazione predefinita, la generazione automatica di DFE statistiche è abilitata quando DFE abiliti.
È possibile disabilitare la generazione automatica come segue:
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'
Se la richiesta ha esito positivo, il codice di HTTP risposta è 200
e la risposta è:
{ "status" : "200 OK" }
È possibile verificare che la generazione automatica è disabilitata inviando una richiesta di stato e verificando che il campo autoCompute
nella risposta sia impostato su false
.
La disabilitazione della generazione automatica delle statistiche non interrompe il calcolo delle statistiche in corso.
Se si effettua una richiesta per disabilitare la generazione automatica su un'istanza reader anziché sull'istanza writer del cluster DB, la richiesta ha esito negativo con un codice di HTTP ritorno 400 e un output simile al seguente:
{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }
Per visualizzare un elenco di altri errori comuni, consulta Errori comuni.
Riattivazione della generazione automatica di statistiche DFE
Per impostazione predefinita, la generazione automatica di DFE statistiche è già abilitata quando DFE abiliti. Se si disabilita la generazione automatica, è possibile riabilitarla in un secondo momento come segue:
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'
Se la richiesta ha esito positivo, il codice di HTTP risposta è 200
e la risposta è:
{ "status" : "200 OK" }
È possibile verificare che la generazione automatica è abilitata inviando una richiesta di stato e verificando che il campo autoCompute
nella risposta sia impostato su true
.
Attivazione manuale della generazione di statistiche DFE
È possibile avviare la generazione di DFE statistiche manualmente come segue:
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'
Se la richiesta ha esito positivo, l'output è il seguente, con un codice di HTTP ritorno 200:
{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }
Il valore statisticsId
nell'output è l'ID dell'esecuzione della generazione di statistiche attualmente in corso. Se un'esecuzione era già in corso al momento della richiesta, la richiesta restituisce l'ID di tale esecuzione anziché avviarne una nuova. È possibile eseguire una sola generazione di statistiche alla volta.
Se si verifica un failover durante la generazione DFE delle statistiche, il nuovo nodo writer rileverà l'ultimo checkpoint elaborato e riprenderà l'esecuzione delle statistiche da lì.
Utilizzo della StatsNumStatementsScanned
CloudWatch metrica per monitorare il calcolo delle statistiche
La StatsNumStatementsScanned
CloudWatch metrica restituisce il numero totale di istruzioni analizzate per il calcolo delle statistiche dall'avvio del server. Viene aggiornata ad ogni sezione di calcolo delle statistiche.
Ogni volta che viene attivato il calcolo delle statistiche, questo numero aumenta e quando non viene eseguito alcun calcolo, rimane costante. L'esame di un grafico dei valori di StatsNumStatementsScanned
nel tempo offre quindi un quadro abbastanza chiaro di quando è stato effettuato il calcolo delle statistiche e con quale velocità:
![Grafico dei valori metrici StatsNumStatementsScanned](images/StatsNumStatementsScanned-graph.png)
Durante il calcolo, la pendenza del grafico mostra la velocità (maggiore è la pendenza, più velocemente vengono calcolate le statistiche).
Se il grafico è semplicemente una linea piatta a 0, la funzionalità delle statistiche è stata abilitata, ma non è stata calcolata alcuna statistica. Se la funzionalità delle statistiche è stata disabilitata o se si utilizza una versione del motore che non supporta il calcolo delle statistiche, StatsNumStatementsScanned
non esiste.
Come accennato in precedenza, è possibile disabilitare il calcolo delle statistiche utilizzando le statisticheAPI, ma se questa opzione è disattivata, le statistiche potrebbero non essere aggiornate, il che a sua volta può comportare una scarsa generazione del piano di query per il DFE motore.
Monitoraggio di Neptune tramite Amazon CloudWatchPer informazioni sull'uso CloudWatch, vedere.
Utilizzo dell'autenticazione AWS Identity and Access Management (IAM) con gli endpoint DFE statistici
Puoi accedere agli endpoint DFE statistici in modo sicuro con IAM l'autenticazione utilizzando awscurl
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db
Oppure, ad esempio, puoi creare un JSON file denominato che contiene: request.json
{ "mode" : "refresh" }
È quindi possibile avviare manualmente la generazione di statistiche nel modo seguente:
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db \ -X POST -d @request.json
Eliminazione delle statistiche DFE
È possibile eliminare tutte le statistiche nel database effettuando una HTTP DELETE richiesta all'endpoint delle statistiche:
curl -X "DELETE" "$STATISTICS_ENDPOINT"
I codici di HTTP restituzione validi sono:
-
200
: l'eliminazione è riuscita.In questo caso, una risposta tipica è la seguente:
{ "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
-
204
: non c'erano statistiche da eliminare.In questo caso, la risposta è vuota (nessuna risposta).
Se si invia una richiesta di eliminazione a un endpoint di statistiche su un nodo di lettura, viene generata un'eccezione ReadOnlyViolationException
.
Codici di errore comuni per la richiesta di DFE statistiche
Di seguito è riportato un elenco di errori comuni che possono verificarsi quando si effettua una richiesta a un endpoint di statistiche:
AccessDeniedException
: codice restituito:400
. MessaggioMissing Authentication Token
.BadRequestException
(per Gremlin eopenCypher) — Codice di ritorno:.400
MessaggioBad route: /pg/statistics
.BadRequestException
(per RDF i dati) — Codice di ritorno:.400
MessaggioBad route: /rdf/statistics
.InvalidParameterException
: codice restituito:400
. MessaggioStatistics command parameter 'mode' has unsupported value '
.the invalid value
'MissingParameterException
: codice restituito:400
. MessaggioContent-type header not specified.
.ReadOnlyViolationException
: codice restituito:400
. MessaggioWrites are not permitted on a read replica instance
.
Per esempio, se effettui una richiesta quando le statistiche DFE e non sono abilitate, otterrai una risposta simile alla seguente:
{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }