Verwenden der Amazon-Neptune-Protokollierung für langsame Abfragen - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der Amazon-Neptune-Protokollierung für langsame Abfragen

Das Identifizieren, Debuggen und Optimieren einer langsam ausgeführten Abfrage kann schwierig sein. Wenn die Neptune-Protokollierung für langsame Abfragen aktiviert ist, werden die Attribute aller Abfragen mit langer Laufzeit automatisch protokolliert, um diesen Vorgang zu vereinfachen.

Anmerkung

Die Protokollierung langsamer Abfragen wurde in der Neptune-Engine-Version 1.2.1.0 eingeführt.

Sie aktivieren die Protokollierung langsamer Abfragen mit dem DB-Cluster-Parameter neptune_enable_slow_query_log. Dieser Parameter ist standardmäßig auf disabled festgelegt. Wenn Sie ihn auf info oder debug festlegen, wird die Protokollierung für langsame Abfragen aktiviert. Die Einstellung info protokolliert einige nützliche Attribute für jede langsam ausgeführte Abfrage. Die Einstellung debug protokolliert hingegen alle verfügbaren Attribute.

Um den Schwellenwert für eine als langsam ausgeführte Abfrage betrachtete Abfrage festzulegen, verwenden Sie den DB-Cluster-Parameter neptune_slow_query_log_threshold, um die Anzahl der Millisekunden anzugeben, nach der eine Abfrage als langsam betrachtet und protokolliert wird, wenn die Protokollierung langsamer Abfragen aktiviert ist. Der Standardwert ist 5.000 Millisekunden (5 Sekunden).

Sie können diese DB-Cluster-Parameter im AWS Management Console oder mithilfe des AWS CLI Befehls modify-db-cluster-parameter-group oder der odifyDBClusterParameterGroupM-Verwaltungsfunktion festlegen.

Anmerkung

Die Protokollierungsparameter für langsame Abfragen sind dynamisch. Das bedeutet, dass das Ändern ihrer Werte keinen Neustart des DB-Clusters erfordert oder verursacht.

Um Logs für langsame Abfragen anzuzeigen, finden Sie im AWS Management Console

Sie können Protokolle für langsame Abfragen wie folgt im anzeigen und herunterladen: AWS Management Console

Wählen Sie auf der Seite Instances eine DB-Instance aus und scrollen Sie dann zum Abschnitt Protokolle. Sie können dort eine Protokolldatei auswählen und dann Herunterladen auswählen, um sie herunterzuladen.

Dateien, die von der Neptune-Protokollierung für langsame Abfragen generiert werden

Die durch die Protokollierung für langsame Abfragen generierten Protokolldateien besitzen die folgenden Eigenschaften:

  • Die Dateien sind als -8 codiert. UTF

  • Abfragen und ihre Attribute werden im JSON Formular protokolliert.

  • Null- und leere Attribute werden nicht protokolliert, außer queryTime-Daten.

  • Protokolle umfassen mehrere Dateien, deren Anzahl von der Größe der Instance abhängig ist.

  • Protokolleinträge folgen keiner sequenziellen Reihenfolge. Sie können ihre timestamp-Werte verwenden, um sie anzuordnen.

  • Sie müssen möglicherweise alle Protokolldateien für langsame Abfragen überprüfen, um die neuesten Ereignisse anzuzeigen.

  • Protokolldateien werden rotiert, wenn sie zusammen die Größe von 100 MiB erreichen. Dieses Limit ist nicht konfigurierbar.

Im info-Modus protokollierte Abfrageattribute

Die folgenden Attribute werden für langsame Abfragen protokolliert, wenn der DB-Cluster-Parameter neptune_enable_slow_query_log auf info festgelegt wurde:

Gruppe Attribut Beschreibung

requestResponseMetadata

requestId

Anforderungs-ID der Abfrage.

requestType

Art der Anfrage, wie HTTP oder WebSocket.

responseStatusCode

Statuscode der Abfrageantwort, z. B. 200.

exceptionClass

Ausnahmeklasse des Fehlers, der nach Ausführung der Abfrage zurückgegeben wurde.

queryStats

query

Abfragezeichenfolge.

queryFingerprint

Fingerabdruck der Abfrage.

queryLanguage

Abfragesprache, wie Gremlin oder. SPARQL openCypher

memoryStats

allocatedPermits

Berechtigungen, die der Abfrage zugeteilt sind.

approximateUsedMemoryBytes

Ungefährer Arbeitsspeichernutzung durch die Abfrage während der Ausführung.

queryTime

startTime

Startzeit abfragen ()UTC.

overallRunTimeMs

Gesamtlaufzeit der Abfrage in Millisekunden.

parsingTimeMs

Analysezeit der Abfrage in Millisekunden.

waitingTimeMs

Wartezeit in der openCypher Warteschlange SPARQL Gremlin///in Millisekunden abfragen

executionTimeMs

Ausführungszeit der Abfrage in Millisekunden.

serializationTimeMs

Serialisierungszeit der Abfrage in Millisekunden.

statementCounters

scanned

Anzahl der gescannten Anweisungen.

written

Anzahl der geschriebenen Anweisungen.

deleted

Anzahl der gelöschten Anweisungen.

transactionCounters

committed

Anzahl der übergebenen Transaktionen.

rolledBack

Anzahl der rückgängig gemachten Transaktionen.

vertexCounters

added

Anzahl der hinzugefügten Eckpunkte.

removed

Anzahl der entfernten Eckpunkte.

propertiesAdded

Anzahl der hinzugefügten Eckpunkteigenschaften.

propertiesRemoved

Anzahl der entfernten Eckpunkteigenschaften.

edgeCounters

added

Anzahl der hinzugefügten Kanten.

removed

Anzahl der entfernten Kanten.

propertiesAdded

Anzahl der hinzugefügten Kanteneigenschaften.

propertiesRemoved

Anzahl der entfernten Kanteneigenschaften.

resultCache

hitCount

Anzahl der Ergebnis-Cache-Treffer.

missCount

Anzahl der Ergebnis-Cache-Fehler.

putCount

Anzahl der Ergebnis-Cache-Puts.

concurrentExecution

acceptedQueryCountAtStart

Parallele Abfragen, die mit der aktuellen Abfrageausführung beim Start akzeptiert wurden.

runningQueryCountAtStart

Parallele Abfragen, die mit der aktuellen Abfrageausführung beim Start ausgeführt wurden.

acceptedQueryCountAtEnd

Parallele Abfragen, die mit der aktuellen Abfrageausführung am Ende akzeptiert wurden.

runningQueryCountAtEnd

Parallele Abfragen, die mit der aktuellen Abfrageausführung am Ende ausgeführt wurden.

queryBatch

queryProcessingBatchSize

Batchgröße während der Abfrageverarbeitung.

querySerialisationBatchSize

Batchgröße während der Abfrageserialisierung.

Im debug-Modus protokollierte Abfrageattribute

Wenn der neptune_enable_slow_query_log-DB-Cluster-Parameter auf debug festgelegt wurde, werden zusätzlich zu den Attributen, die im info-Modus protokolliert werden, die folgenden Speicherzähler-Attribute protokolliert:

Attribut Beschreibung

statementsScannedInAllIndexes

Zahl der in allen Indizes gescannten Anweisungen.

statementsScannedSPOGIndex

Im Index SPOG gescannte Anweisungen.

statementsScannedPOGSIndex

Im POGS Index gescannte Aussagen.

statementsScannedGPSOIndex

Im GPSO Index gescannte Aussagen.

statementsScannedOSGPIndex

Im OSGP Index gescannte Aussagen.

statementsScannedInChunk

Zahl der zusammen im Block gescannten Anweisungen.

postFilteredStatementScans

Zahl der Anweisungen, die nach dem Filtern nach dem Scannen übrig sind.

distinctStatementScans

Zahl der eindeutigen gescannten Anweisungen.

statementsReadInAllIndexes

Zahl der gelesenen Anweisungen nach dem Scannen nach dem Filtern in allen Indizes.

statementsReadSPOGIndex

Anweisungen, die nach dem Scannen nach dem Filtern im SPOG Index gelesen wurden.

statementsReadPOGSIndex

Anweisungen, die nach dem Scannen nach dem Filtern im POGS Index gelesen wurden.

statementsReadGPSOIndex

Anweisungen, die nach dem Scannen nach dem Filtern im GPSO Index gelesen wurden.

statementsReadOSGPIndex

Anweisungen, die nach dem Scannen nach dem Filtern im OSGP Index gelesen wurden.

accessPathSearches

Anzahl der Zugriffspfadsuchen.

fullyBoundedAccessPathSearches

Anzahl der Suchen nach vollständig begrenzten Schlüsselzugriffspfaden.

accessPathSearchedByPrefix

Anzahl der Zugriffspfadsuchen nach Präfix.

searchesWhereRecordsWereFound

Anzahl der Suchen, bei denen 1 oder mehrere Datensätze ausgegeben wurden.

searchesWhereRecordsWereNotFound

Anzahl der Suchen, bei denen keine Datensätze ausgegeben wurden.

totalRecordsFoundInSearches

Gesamtzahl der bei allen Suchen gefundenen Datensätze.

statementsInsertedInAllIndexes

Anzahl der in allen Indizes eingefügten Anweisungen.

statementsUpdatedInAllIndexes

Anzahl der in allen Indizes aktualisierten Anweisungen.

statementsDeletedInAllIndexes

Anzahl der in allen Indizes gelöschten Anweisungen.

predicateCount

Anzahl der Prädikate.

dictionaryReadsFromValueToIdTable

Anzahl der Verzeichnislesevorgänge von der Wert- in die ID-Tabelle.

dictionaryReadsFromIdToValueTable

Anzahl der Verzeichnislesevorgänge von der ID- in die Wert-Tabelle.

dictionaryWritesToValueToIdTable

Anzahl der Verzeichnisschreibvorgänge von der Wert- in die ID-Tabelle.

dictionaryWritesToIdToValueTable

Anzahl der Verzeichnisschreibvorgänge von der ID- in die Wert-Tabelle.

rangeCountsInAllIndexes

Anzahl der Bereichszählungen in allen Indizes.

deadlockCount

Anzahl der Deadlocks in der Abfrage.

singleCardinalityInserts

Anzahl der ausgeführten Einfügungen mit einfacher Kardinalität.

singleCardinalityInsertDeletions

Anzahl der während Einfügungen mit einfacher Kardinalität gelöschten Anweisungen.

Beispiel für die Debug-Protokollierung einer langsamen Abfrage

Die Ausführung der folgenden Gremlin-Abfrage könnte länger dauern als der für langsame Abfragen festgelegte Schwellenwert:

gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()

Wenn die Protokollierung langsamer Abfragen im Debug-Modus aktiviert wäre, würden die folgenden Attribute für die Abfrage in einem Format wie dem folgenden protokolliert:

{ "requestResponseMetadata": { "requestId": "5311e493-0e98-457e-9131-d250a2ce1e12", "requestType": "HTTP_GET", "responseStatusCode": 200 }, "queryStats": { "query": "gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()", "queryFingerprint": "g.V().has(string0,string1).repeat(__.out().simplePath()).until(__.has(string0,string2)).path().by(string0).limit(long0).fold()", "queryLanguage": "Gremlin" }, "memoryStats": { "allocatedPermits": 20, "approximateUsedMemoryBytes": 14838 }, "queryTimeStats": { "startTime": "23/02/2023 11:42:52.657", "overallRunTimeMs": 2249, "executionTimeMs": 2229, "serializationTimeMs": 13 }, "statementCounters": { "read": 69979 }, "transactionCounters": { "committed": 1 }, "concurrentExecutionStats": { "acceptedQueryCountAtStart": 1 }, "queryBatchStats": { "queryProcessingBatchSize": 1000, "querySerialisationBatchSize": 1000 }, "storageCounters": { "statementsScannedInAllIndexes": 69979, "statementsScannedSPOGIndex": 44936, "statementsScannedPOGSIndex": 4, "statementsScannedGPSOIndex": 25039, "statementsReadInAllIndexes": 68566, "statementsReadSPOGIndex": 43544, "statementsReadPOGSIndex": 2, "statementsReadGPSOIndex": 25020, "accessPathSearches": 27, "fullyBoundedAccessPathSearches": 27, "dictionaryReadsFromValueToIdTable": 10, "dictionaryReadsFromIdToValueTable": 17, "rangeCountsInAllIndexes": 4 } }