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 |
|
ID da solicitação da consulta. |
|
Tipo de solicitação, como HTTP ou WebSocket. |
|
|
Código de status da resposta da consulta, como 200. |
|
|
Classe de exceção do erro gerado após a execução da consulta. |
|
queryStats |
|
String de consulta. |
|
Impressão digital da consulta. |
|
|
Linguagem de consulta, como Gremlin ouSPARQL. openCypher |
|
memoryStats |
|
Permissões alocadas à consulta. |
|
Memória aproximada usada pela consulta durante a execução. |
|
queryTime |
|
Hora de início da consulta (UTC). |
|
Tempo total de execução da consulta, em milissegundos. |
|
|
Tempo de análise da consulta, em milissegundos. |
|
|
Tempo de espera da Gremlin/SPARQL/openCypher fila de consultas, em milissegundos |
|
|
Tempo de execução da consulta, em milissegundos. |
|
|
Tempo de serialização da consulta, em milissegundos. |
|
statementCounters |
|
Número de declarações lidas. |
|
Número de declarações escritas. |
|
|
Número de declarações excluídas. |
|
transactionCounters |
|
Número de transações confirmadas. |
|
Número de transações revertidas. |
|
vertexCounters |
|
Número de vértices adicionados. |
|
Número de vértices removidos. |
|
|
Número de propriedades de vértice adicionadas. |
|
|
Número de propriedades de vértice removidas. |
|
edgeCounters |
|
Número de bordas adicionadas. |
|
Número de bordas removidas. |
|
|
Número de propriedades de borda adicionadas. |
|
|
Número de propriedades de borda removidas. |
|
resultCache |
|
Contagem de acertos do cache de resultados. |
|
Contagem de erros do cache de resultados. |
|
|
Contagem de colocações do cache de resultados. |
|
concurrentExecution |
|
Consultas paralelas aceitas com a execução da consulta atual no início. |
|
Consultas paralelas em execução com a execução da consulta atual no início. |
|
|
Consultas paralelas aceitas com a execução da consulta atual no fim. |
|
|
Consultas paralelas em execução com a execução da consulta atual no fim. |
|
queryBatch |
|
Tamanho do lote durante o processamento da consulta. |
|
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 |
---|---|
|
Declarações verificadas em todos os índices. |
|
Declarações digitalizadas no SPOG índice. |
|
Declarações digitalizadas no POGS índice. |
|
Declarações digitalizadas no GPSO índice. |
|
Declarações digitalizadas no OSGP índice. |
|
Declarações verificadas juntas no bloco. |
|
Declarações deixadas depois da pós-filtragem após as verificações. |
|
Declarações distintas verificadas. |
|
Declarações lidas depois da pós-filtragem em todos os índices. |
|
Declarações lidas após a digitalização postam a filtragem no SPOG índice. |
|
Declarações lidas após a digitalização postam a filtragem no POGS índice. |
|
Declarações lidas após a digitalização postam a filtragem no GPSO índice. |
|
Declarações lidas após a digitalização postam a filtragem no OSGP índice. |
|
Número de pesquisas de caminhos de acesso. |
|
Número de pesquisas de caminhos de acesso à chave totalmente limitada. |
|
Número do caminho de acesso pesquisado por prefixo. |
|
Número de pesquisas que tiveram um ou mais registros como saída. |
|
Número de pesquisas que não tiveram registros como saída. |
|
Total de registros encontrados em todas as pesquisas. |
|
Número de declarações inseridas em todos os índices. |
|
Número de declarações atualizadas em todos os índices. |
|
Número de declarações excluídas em todos os índices. |
|
Número de predicados. |
|
Número de leituras do dicionário do valor até a tabela de ID. |
|
Número de leituras do dicionário do ID da tabela de valores. |
|
Número de gravações do dicionário no valor na tabela de ID. |
|
Número de gravações do dicionário no ID na tabela de valores. |
|
Número de contagens de intervalos em todos os índices. |
|
Número de deadlocks na consulta. |
|
Número de inserções de cardinalidade única realizadas. |
|
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 } }