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.
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 DBCluster ParameterGroup Verwaltungsfunktion Modify 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 UTF-8 kodiert.
Abfragen und ihre Attribute werden im JSON-Format 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 |
|
Anforderungs-ID der Abfrage. |
|
Art der Anfrage, z. B. HTTP oder. WebSocket |
|
|
Statuscode der Abfrageantwort, z. B. 200. |
|
|
Ausnahmeklasse des Fehlers, der nach Ausführung der Abfrage zurückgegeben wurde. |
|
queryStats |
|
Abfragezeichenfolge. |
|
Fingerabdruck der Abfrage. |
|
|
Abfragesprache wie Gremlin, SPARQL oder openCypher. |
|
memoryStats |
|
Berechtigungen, die der Abfrage zugeteilt sind. |
|
Ungefährer Arbeitsspeichernutzung durch die Abfrage während der Ausführung. |
|
queryTime |
|
Startzeit der Abfrage (UTC). |
|
Gesamtlaufzeit der Abfrage in Millisekunden. |
|
|
Analysezeit der Abfrage in Millisekunden. |
|
|
Wartezeit der Gremlin/SPARQL/openCypher Abfragewarteschlange, in Millisekunden |
|
|
Ausführungszeit der Abfrage in Millisekunden. |
|
|
Serialisierungszeit der Abfrage in Millisekunden. |
|
statementCounters |
|
Anzahl der gelesenen Anweisungen. |
|
Anzahl der geschriebenen Anweisungen. |
|
|
Anzahl der gelöschten Anweisungen. |
|
transactionCounters |
|
Anzahl der übergebenen Transaktionen. |
|
Anzahl der rückgängig gemachten Transaktionen. |
|
vertexCounters |
|
Anzahl der hinzugefügten Eckpunkte. |
|
Anzahl der entfernten Eckpunkte. |
|
|
Anzahl der hinzugefügten Eckpunkteigenschaften. |
|
|
Anzahl der entfernten Eckpunkteigenschaften. |
|
edgeCounters |
|
Anzahl der hinzugefügten Kanten. |
|
Anzahl der entfernten Kanten. |
|
|
Anzahl der hinzugefügten Kanteneigenschaften. |
|
|
Anzahl der entfernten Kanteneigenschaften. |
|
resultCache |
|
Anzahl der Ergebnis-Cache-Treffer. |
|
Anzahl der Ergebnis-Cache-Fehler. |
|
|
Anzahl der Ergebnis-Cache-Puts. |
|
concurrentExecution |
|
Parallele Abfragen, die mit der aktuellen Abfrageausführung beim Start akzeptiert wurden. |
|
Parallele Abfragen, die mit der aktuellen Abfrageausführung beim Start ausgeführt wurden. |
|
|
Parallele Abfragen, die mit der aktuellen Abfrageausführung am Ende akzeptiert wurden. |
|
|
Parallele Abfragen, die mit der aktuellen Abfrageausführung am Ende ausgeführt wurden. |
|
queryBatch |
|
Batchgröße während der Abfrageverarbeitung. |
|
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 |
---|---|
|
Zahl der in allen Indizes gescannten Anweisungen. |
|
Zahl der im SPOG-Index gescannten Anweisungen. |
|
Zahl der im POGS-Index gescannten Anweisungen. |
|
Zahl der im GPSO-Index gescannten Anweisungen. |
|
Zahl der im OSGP-Index gescannten Anweisungen. |
|
Zahl der zusammen im Block gescannten Anweisungen. |
|
Zahl der Anweisungen, die nach dem Filtern nach dem Scannen übrig sind. |
|
Zahl der eindeutigen gescannten Anweisungen. |
|
Zahl der gelesenen Anweisungen nach dem Scannen nach dem Filtern in allen Indizes. |
|
Zahl der gelesenen Anweisungen nach dem Scannen nach dem Filtern im SPOG-Index. |
|
Zahl der gelesenen Anweisungen nach dem Scannen nach dem Filtern im POGS-Index. |
|
Zahl der gelesenen Anweisungen nach dem Scannen nach dem Filtern im GPSO-Index. |
|
Zahl der gelesenen Anweisungen nach dem Scannen nach dem Filtern im OSGP-Index. |
|
Anzahl der Zugriffspfadsuchen. |
|
Anzahl der Suchen nach vollständig begrenzten Schlüsselzugriffspfaden. |
|
Anzahl der Zugriffspfadsuchen nach Präfix. |
|
Anzahl der Suchen, bei denen 1 oder mehrere Datensätze ausgegeben wurden. |
|
Anzahl der Suchen, bei denen keine Datensätze ausgegeben wurden. |
|
Gesamtzahl der bei allen Suchen gefundenen Datensätze. |
|
Anzahl der in allen Indizes eingefügten Anweisungen. |
|
Anzahl der in allen Indizes aktualisierten Anweisungen. |
|
Anzahl der in allen Indizes gelöschten Anweisungen. |
|
Anzahl der Prädikate. |
|
Anzahl der Verzeichnislesevorgänge von der Wert- in die ID-Tabelle. |
|
Anzahl der Verzeichnislesevorgänge von der ID- in die Wert-Tabelle. |
|
Anzahl der Verzeichnisschreibvorgänge von der Wert- in die ID-Tabelle. |
|
Anzahl der Verzeichnisschreibvorgänge von der ID- in die Wert-Tabelle. |
|
Anzahl der Bereichszählungen in allen Indizes. |
|
Anzahl der Deadlocks in der Abfrage. |
|
Anzahl der ausgeführten Einfügungen mit einfacher Kardinalität. |
|
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
}
}