Usar o registro em log de consultas lentas do Amazon Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar o registro em log de consultas lentas do Amazon Neptune

Identificar, depurar e otimizar uma consulta de execução lenta pode ser difícil. Quando o registro em log de consultas lentas do Neptune está habilitado, os atributos de todas as consultas de longa duração são registrados automaticamente para facilitar esse processo.

nota

O registro em log de consultas lentas foi introduzido na versão 1.2.1.0 do mecanismo do Neptune.

Você habilita o registro em log de consultas lentas usando o parâmetro de cluster de banco de dados neptune_enable_slow_query_log. Esse parâmetro é definido como disabled por padrão. Configurá-lo como info ou debug habilita o registro em log de consultas lentas. A configuração info registra alguns atributos úteis de cada consulta de execução lenta, enquanto a configuração debug registra todos os atributos disponíveis.

Para definir o limite para o que uma consulta seja considerada de execução lenta, use o parâmetro de cluster de banco de dados neptune_slow_query_log_threshold para especificar o número de milissegundos após os quais uma consulta em execução é considerada lenta e é registrada quando o registro em log de consultas lentas está habilitado. O valor padrão é cinco mil milissegundos (cinco segundos).

Você pode definir esses parâmetros do cluster de banco de dados no AWS Management Console, ou usando o AWS CLI comando modify-db-cluster-parameter-group ou a função odifyDBCluster ParameterGroup de gerenciamento M.

nota

Os parâmetros de registro em log de consultas lentas são dinâmicos, o que significa que a alteração dos valores não exige nem causa a reinicialização do cluster de banco de dados.

Para visualizar registros de consultas lentas no AWS Management Console

Você pode visualizar e baixar registros de consulta lenta no AWS Management Console, da seguinte forma:

Na página Instâncias, escolha a instância do banco de dados e, depois, vá até a seção Logs. Depois, você pode selecionar um arquivo de log e escolher Baixar para baixá-lo.

Os arquivos gerados pelo registro em log de consultas lentas do Neptune

Os arquivos de log gerados pelo registro em log de consultas lentas no Neptune têm as seguintes características:

  • Os arquivos são codificados como UTF -8.

  • As consultas e seus atributos são registrados no JSON formulário.

  • Atributos nulos e vazios não são registrados, exceto dados queryTime.

  • Os logs abrangem vários arquivos, cujo número varia de acordo com o tamanho da instância.

  • As entradas do log não estão em ordem sequencial. Você pode usar os valores timestamp para ordená-las.

  • Para ver os eventos mais recentes, talvez seja preciso analisar todos os arquivos de log de consultas lentas.

  • Os arquivos de log são trocados quando atingem 100 MiB em conjunto. Esse limite não é configurável.

Atributos de consulta registrados no modo info

Os seguintes atributos são registrados para consultas lentas quando o parâmetro do cluster de banco de dados neptune_enable_slow_query_log é definido como info:

Grupo Atributo Descrição

requestResponseMetadata

requestId

ID da solicitação da consulta.

requestType

Tipo de solicitação, como HTTP ou WebSocket.

responseStatusCode

Código de status da resposta da consulta, como 200.

exceptionClass

Classe de exceção do erro gerado após a execução da consulta.

queryStats

query

String de consulta.

queryFingerprint

Impressão digital da consulta.

queryLanguage

Linguagem de consulta, como Gremlin ouSPARQL. openCypher

memoryStats

allocatedPermits

Permissões alocadas à consulta.

approximateUsedMemoryBytes

Memória aproximada usada pela consulta durante a execução.

queryTime

startTime

Hora de início da consulta (UTC).

overallRunTimeMs

Tempo total de execução da consulta, em milissegundos.

parsingTimeMs

Tempo de análise da consulta, em milissegundos.

waitingTimeMs

Tempo de espera da Gremlin/SPARQL/openCypher fila de consultas, em milissegundos

executionTimeMs

Tempo de execução da consulta, em milissegundos.

serializationTimeMs

Tempo de serialização da consulta, em milissegundos.

statementCounters

read

Número de declarações lidas.

written

Número de declarações escritas.

deleted

Número de declarações excluídas.

transactionCounters

committed

Número de transações confirmadas.

rolledBack

Número de transações revertidas.

vertexCounters

added

Número de vértices adicionados.

removed

Número de vértices removidos.

propertiesAdded

Número de propriedades de vértice adicionadas.

propertiesRemoved

Número de propriedades de vértice removidas.

edgeCounters

added

Número de bordas adicionadas.

removed

Número de bordas removidas.

propertiesAdded

Número de propriedades de borda adicionadas.

propertiesRemoved

Número de propriedades de borda removidas.

resultCache

hitCount

Contagem de acertos do cache de resultados.

missCount

Contagem de erros do cache de resultados.

putCount

Contagem de colocações do cache de resultados.

concurrentExecution

acceptedQueryCountAtStart

Consultas paralelas aceitas com a execução da consulta atual no início.

runningQueryCountAtStart

Consultas paralelas em execução com a execução da consulta atual no início.

acceptedQueryCountAtEnd

Consultas paralelas aceitas com a execução da consulta atual no fim.

runningQueryCountAtEnd

Consultas paralelas em execução com a execução da consulta atual no fim.

queryBatch

queryProcessingBatchSize

Tamanho do lote durante o processamento da consulta.

querySerialisationBatchSize

Tamanho do lote durante a serialização da consulta.

Atributos de consulta registrados no modo debug

Quando o parâmetro do cluster de banco de dados neptune_enable_slow_query_log é definido como debug, os seguintes atributos do contador de armazenamento são registrados, além dos atributos que são registrados como no modo info:

Atributo Descrição

statementsScannedInAllIndexes

Declarações verificadas em todos os índices.

statementsScannedSPOGIndex

Declarações digitalizadas no SPOG índice.

statementsScannedPOGSIndex

Declarações digitalizadas no POGS índice.

statementsScannedGPSOIndex

Declarações digitalizadas no GPSO índice.

statementsScannedOSGPIndex

Declarações digitalizadas no OSGP índice.

statementsScannedInChunk

Declarações verificadas juntas no bloco.

postFilteredStatementScans

Declarações deixadas depois da pós-filtragem após as verificações.

distinctStatementScans

Declarações distintas verificadas.

statementsReadInAllIndexes

Declarações lidas depois da pós-filtragem em todos os índices.

statementsReadSPOGIndex

Declarações lidas após a digitalização postam a filtragem no SPOG índice.

statementsReadPOGSIndex

Declarações lidas após a digitalização postam a filtragem no POGS índice.

statementsReadGPSOIndex

Declarações lidas após a digitalização postam a filtragem no GPSO índice.

statementsReadOSGPIndex

Declarações lidas após a digitalização postam a filtragem no OSGP índice.

accessPathSearches

Número de pesquisas de caminhos de acesso.

fullyBoundedAccessPathSearches

Número de pesquisas de caminhos de acesso à chave totalmente limitada.

accessPathSearchedByPrefix

Número do caminho de acesso pesquisado por prefixo.

searchesWhereRecordsWereFound

Número de pesquisas que tiveram um ou mais registros como saída.

searchesWhereRecordsWereNotFound

Número de pesquisas que não tiveram registros como saída.

totalRecordsFoundInSearches

Total de registros encontrados em todas as pesquisas.

statementsInsertedInAllIndexes

Número de declarações inseridas em todos os índices.

statementsUpdatedInAllIndexes

Número de declarações atualizadas em todos os índices.

statementsDeletedInAllIndexes

Número de declarações excluídas em todos os índices.

predicateCount

Número de predicados.

dictionaryReadsFromValueToIdTable

Número de leituras do dicionário do valor até a tabela de ID.

dictionaryReadsFromIdToValueTable

Número de leituras do dicionário do ID da tabela de valores.

dictionaryWritesToValueToIdTable

Número de gravações do dicionário no valor na tabela de ID.

dictionaryWritesToIdToValueTable

Número de gravações do dicionário no ID na tabela de valores.

rangeCountsInAllIndexes

Número de contagens de intervalos em todos os índices.

deadlockCount

Número de deadlocks na consulta.

singleCardinalityInserts

Número de inserções de cardinalidade única realizadas.

singleCardinalityInsertDeletions

Número de declarações excluídas durante a inserção de cardinalidade única.

Exemplo de registro em log de depuração para uma consulta lenta

A seguinte consulta do Gremlin pode levar mais tempo para ser executada do que o limite definido para consultas lentas:

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

Então, se o registro em log de consultas lentas estivesse habilitado no modo de depuração, os seguintes atributos seriam registrados para a consulta, da seguinte forma:

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