Uso del registro de consultas lentas de Amazon Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso del registro de consultas lentas de Amazon Neptune

La identificación, depuración y optimización de una consulta de ejecución lenta puede resultar difícil. Cuando el registro de consultas lentas de Neptune está habilitado, los atributos de todas las consultas de larga duración se registran automáticamente para facilitar este proceso.

nota

El registro de consultas lentas se introdujo en la versión 1.2.1.0 del motor de Neptune.

Para habilitar el registro de consultas lentas, utilice el parámetro de clúster de base de datos neptune_enable_slow_query_log. Este parámetro está establecido en disabled de forma predeterminada. Al establecerlo en info o debug, se habilita el registro de consultas lentas. La configuración de info registra algunos atributos útiles de cada consulta de ejecución lenta, mientras que la configuración de debug registra todos los atributos disponibles.

Para establecer el umbral de lo que se considera una consulta de ejecución lenta, utilice el parámetro de clúster de base de datos neptune_slow_query_log_threshold para especificar el número de milisegundos tras los cuales una consulta en ejecución se considera lenta y se registra cuando el registro de consultas lentas está activado. El valor predeterminado es de 5000 milisegundos (5 segundos).

Puede configurar estos parámetros del clúster de base de datos en la función de odifyDBCluster ParameterGroup administración M AWS Management Console, o mediante el AWS CLI comando modify-db-cluster-parameter-group.

nota

Los parámetros de registro de consultas lentas son dinámicos, lo que significa que cambiar sus valores no requiere ni provoca el reinicio del clúster de base de datos.

Para ver los registros de consultas lentas en el AWS Management Console

Puede ver y descargar los registros de consultas lentas en el, de la AWS Management Console siguiente manera:

En la página Instancias, elija la instancia de base de datos y, a continuación, desplácese hasta la sección Registros. A continuación, puede seleccionar un archivo de registro allí y luego elegir Descargar para descargarlo.

Los archivos generados por el registro de consultas lentas de Neptune

Los archivos de registro generados por el registro de consultas lentas en Neptune tienen las siguientes características:

  • Los archivos están codificados como UTF -8.

  • Las consultas y sus atributos se registran en JSON forma.

  • Los atributos nulos y vacíos no se registran, excepto los datos queryTime.

  • Los registros abarcan varios archivos, cuyo número varía en función del tamaño de la instancia.

  • Las entradas del registro no están en orden secuencial. Puede usar sus valores timestamp para ordenarlas.

  • Para ver los eventos más recientes, es posible que sea necesario revisar todos los archivos de consultas lentas.

  • Los archivos de registro se rotan cuando llegan a 100 MiB combinados. Este límite no se puede configurar.

Atributos de consultas registrados en el modo info

Los siguientes atributos se registran para las consultas lentas cuando el parámetro del clúster de base de datos neptune_enable_slow_query_log se establece en info:

Grupo Atributo Descripción

requestResponseMetadata

requestId

Identificador de solicitud de la consulta.

requestType

Tipo de solicitud, como HTTP o WebSocket.

responseStatusCode

Código de estado de respuesta de consulta, como 200.

exceptionClass

Clase de excepción del error devuelto tras la ejecución de la consulta.

queryStats

query

Cadena de consulta.

queryFingerprint

Huella digital de la consulta.

queryLanguage

Lenguaje de consulta, como Gremlin, SPARQL o. openCypher

memoryStats

allocatedPermits

Permisos asignados a la consulta.

approximateUsedMemoryBytes

Memoria aproximada utilizada por la consulta durante la ejecución.

queryTime

startTime

Hora de inicio de la consulta ()UTC.

overallRunTimeMs

Tiempo total de la consulta en milisegundos.

parsingTimeMs

Tiempo de análisis de la consulta en milisegundos.

waitingTimeMs

Tiempo de espera de la openCypher cola Query SPARQL Gremlin//, en milisegundos

executionTimeMs

Tiempo de ejecución de la consulta en milisegundos.

serializationTimeMs

Tiempo de serialización de la consulta en milisegundos.

statementCounters

scanned

Número de instrucciones escaneadas.

written

Número de instrucciones escritas.

deleted

Número de instrucciones eliminadas.

transactionCounters

committed

Número de transacciones confirmadas.

rolledBack

Número de transacciones revertidas.

vertexCounters

added

Número de vértices añadidos.

removed

Número de vértices eliminados.

propertiesAdded

Número de propiedades de vértices añadidas.

propertiesRemoved

Número de propiedades de vértices eliminadas.

edgeCounters

added

Número de bordes añadidos.

removed

Número de bordes eliminados.

propertiesAdded

Número de propiedades de borde añadidas.

propertiesRemoved

Número de propiedades de borde eliminadas.

resultCache

hitCount

Número de aciertos de la caché de resultados.

missCount

Número de errores de la caché de resultados.

putCount

Número de colocaciones en la caché de resultados.

concurrentExecution

acceptedQueryCountAtStart

Se aceptan consultas paralelas con la ejecución de la consulta actual al inicio.

runningQueryCountAtStart

Consultas paralelas que se ejecutan con la ejecución de la consulta actual al inicio.

acceptedQueryCountAtEnd

Se aceptan consultas paralelas con la ejecución de la consulta actual al final.

runningQueryCountAtEnd

Consultas paralelas que se ejecutan con la ejecución de la consulta actual al final.

queryBatch

queryProcessingBatchSize

Tamaño del lote durante el procesamiento de consultas.

querySerialisationBatchSize

Tamaño del lote durante la serialización de consultas.

Atributos de consultas registrados en el modo debug

Cuando el parámetro del clúster de base de datos neptune_enable_slow_query_log se ha establecido en debug, se registran los siguientes atributos del contador de almacenamiento además de los atributos que se registran en el modo info:

Atributo Descripción

statementsScannedInAllIndexes

Las instrucciones se escanean en todos los índices.

statementsScannedSPOGIndex

Declaraciones escaneadas en el índice. SPOG

statementsScannedPOGSIndex

Declaraciones escaneadas en POGS el índice.

statementsScannedGPSOIndex

Declaraciones escaneadas en GPSO el índice.

statementsScannedOSGPIndex

Declaraciones escaneadas en OSGP el índice.

statementsScannedInChunk

Instrucciones escaneadas juntas en fragmentos.

postFilteredStatementScans

Las instrucciones que quedan en el posfiltrado después de escanearlas.

distinctStatementScans

Se han escaneado distintas instrucciones.

statementsReadInAllIndexes

Las instrucciones leídas en el posfiltrado después de escanearlas en todos los índices.

statementsReadSPOGIndex

Las declaraciones leídas después de escanearlas se filtran en el SPOG índice.

statementsReadPOGSIndex

Las declaraciones leídas después de escanearlas se filtran después del filtrado en POGS el índice.

statementsReadGPSOIndex

Las declaraciones leídas después de escanearlas se filtran después del filtrado en GPSO el índice.

statementsReadOSGPIndex

Las declaraciones leídas después de escanearlas se filtran después del filtrado en OSGP el índice.

accessPathSearches

Número de búsquedas de rutas de acceso.

fullyBoundedAccessPathSearches

Número de búsquedas de rutas de acceso clave totalmente delimitadas.

accessPathSearchedByPrefix

Número de rutas de acceso buscadas por prefijo.

searchesWhereRecordsWereFound

Número de búsquedas que tenían 1 o más registros como salida.

searchesWhereRecordsWereNotFound

Número de búsquedas que no tenían registros como salida.

totalRecordsFoundInSearches

Total de registros encontrados en todas las búsquedas.

statementsInsertedInAllIndexes

Número de instrucciones insertadas en todos los índices.

statementsUpdatedInAllIndexes

Número de instrucciones actualizadas en todos los índices.

statementsDeletedInAllIndexes

Número de instrucciones eliminadas en todos los índices.

predicateCount

Número de predicados.

dictionaryReadsFromValueToIdTable

Número de lecturas del diccionario desde el valor hasta la tabla de identificadores.

dictionaryReadsFromIdToValueTable

Número de lecturas del diccionario de la tabla de identificadores de valores.

dictionaryWritesToValueToIdTable

Número de escrituras del diccionario en el valor de la tabla de identificadores.

dictionaryWritesToIdToValueTable

Número de escrituras del diccionario en el identificador de la tabla de valores.

rangeCountsInAllIndexes

Número de recuentos de rangos en todos los índices.

deadlockCount

Número de interbloqueos en la consulta.

singleCardinalityInserts

Número de inserciones de cardinalidad única realizadas.

singleCardinalityInsertDeletions

Número de instrucciones eliminadas durante la inserción de cardinalidad única.

Ejemplo de registro de depuración para una consulta lenta

La siguiente consulta de Gremlin podría tardar más en ejecutarse que el umbral establecido para las consultas lentas:

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

En ese caso, si el registro de consultas lentas estuviera habilitado en el modo de depuración, se registrarían los siguientes atributos para la consulta, de una forma como esta:

{ "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 } }