Gerenciando estatísticas para o DFE Neptune usar - 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á.

Gerenciando estatísticas para o DFE Neptune usar

nota

Support for openCypher depende do mecanismo de DFE consulta no Neptune.

O DFE mecanismo foi disponibilizado pela primeira vez no modo de laboratório na versão 1.0.3.0 do Neptune Engine e, a partir da versão 1.0.5.0 do Neptune Engine, ele foi ativado por padrão, mas somente para uso com dicas de consulta e para suporte. openCypher

A partir da versão 1.1.1.0 do Neptune Engine, DFE o mecanismo não está mais no modo de laboratório e agora é controlado usando neptune_dfe_query_engine o parâmetro de instância no grupo de parâmetros de banco de dados de uma instância.

O DFE mecanismo usa informações sobre os dados em seu gráfico de Neptune para fazer compensações efetivas ao planejar a execução da consulta. Essas informações assumem a forma de estatísticas que incluem os chamados conjuntos de características e estatísticas de predicados que podem orientar o planejamento de consultas.

A partir da versão 1.2.1.0 do mecanismo, você pode recuperar informações resumidas sobre seu gráfico a partir dessas estatísticas usando o endpoint GetGraphSummaryAPIou. summary

Atualmente, essas DFE estatísticas são geradas novamente sempre que mais de 10% dos dados em seu gráfico são alterados ou quando as estatísticas mais recentes têm mais de 10 dias. No entanto, esses gatilhos podem mudar no futuro.

nota

A geração de estatísticas está desabilitada em instâncias T3 e T4g porque pode exceder a capacidade de memória desses tipos de instância.

Você pode gerenciar a geração de DFE estatísticas por meio de um dos seguintes endpoints:

  • https://your-neptune-host:port/rdf/statistics (paraSPARQL).

  • https://your-neptune-host:port/propertygraph/statistics(para Gremlin eopenCypher), e sua versão alternativa:. https://your-neptune-host:port/pg/statistics

nota

A partir da versão 1.1.1.0 do mecanismo, o endpoint de estatísticas do Gremlin (https://your-neptune-host:port/gremlin/statistics) está sendo descontinuado em favor do endpoint propertygraph ou pg. Ele ainda é compatível com versões anteriores, mas pode ser removido em versões futuras.

A partir da versão 1.2.1.0 do motor, o endpoint de SPARQL estatísticas (https://your-neptune-host:port/sparql/statistics) está sendo descontinuado em favor do endpoint. rdf Ele ainda é compatível com versões anteriores, mas pode ser removido em versões futuras.

Nos exemplos abaixo, $STATISTICS_ENDPOINT representa qualquer um desses endpointsURLs.

nota

Se um endpoint de DFE estatísticas estiver em uma instância de leitura, as únicas solicitações que ele poderá processar são solicitações de status. Outras solicitações falharão com uma ReadOnlyViolationException.

Limites de tamanho para DFE geração de estatísticas

Atualmente, a geração de DFE estatísticas é interrompida se um dos seguintes limites de tamanho for atingido:

  • O número de conjuntos de características gerados não pode exceder cinquenta mil.

  • O número de estatísticas de predicados geradas não pode exceder um milhão.

Esses limites podem mudar.

Status atual das DFE estatísticas

Você pode verificar o status atual das DFE estatísticas usando a seguinte curl solicitação:

curl -G "$STATISTICS_ENDPOINT"

A resposta a uma solicitação de status contém os seguintes campos:

  • status— o código de HTTP devolução da solicitação. Se a solicitação for bem-sucedida, o código será 200. Para obter uma lista de erros comuns, consulte Erros comuns.

  • payload:

    • autoCompute: (booliano) indica se a geração automática de estatísticas está habilitada ou não.

    • active— (Boolean) Indica se a geração de DFE estatísticas está ou não ativada.

    • statisticsId : relata o ID da execução atual da geração de estatísticas. Um valor de -1 indica que nenhuma estatística foi gerada.

    • date— O UTC momento em que DFE as estatísticas foram geradas mais recentemente, no formato ISO 8601.

      nota

      Antes da versão 1.2.1.0 do mecanismo, isso era representado com precisão de minutos, mas a partir da versão 1.2.1.0 do mecanismo, é representado com precisão de milissegundos (por exemplo, 2023-01-24T00:47:43.319Z).

    • note: uma observação sobre problemas no caso em que as estatísticas são inválidas.

    • signatureInfo: contém informações sobre os conjuntos de características gerados nas estatísticas (antes da versão 1.2.1.0 do mecanismo, esse campo era denominado summary). Geralmente, eles não são diretamente úteis:

      • signatureCount: o número total de assinaturas em todos os conjuntos de características.

      • instanceCount: o número total de instâncias do conjunto de características.

      • predicateCount: o número total de predicados exclusivos.

A resposta a uma solicitação de status quando nenhuma estatística foi gerada é semelhante a esta:

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }

Se DFE as estatísticas estiverem disponíveis, a resposta será semelhante a esta:

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }

Se a geração de DFE estatísticas falhar, por exemplo, porque excedeu o limite de tamanho das estatísticas, a resposta ficará assim:

{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }

Desativando a geração automática de estatísticas DFE

Por padrão, a geração automática de DFE estatísticas é ativada quando você ativaDFE.

É possível desabilitar a geração automática da seguinte forma:

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'

Se a solicitação for bem-sucedida, o código de HTTP resposta será 200 e a resposta será:

{ "status" : "200 OK" }

É possível confirmar se a geração automática está desabilitada permitindo uma solicitação de status e conferindo se o campo autoCompute na resposta está definido como false.

A desativação da geração automática de estatísticas não encerra um cálculo estatístico em andamento.

Se você fizer uma solicitação para desativar a geração automática para uma instância de leitor em vez de para a instância de gravação do seu cluster de banco de dados, a solicitação falhará com um código de HTTP retorno de 400 e uma saída como a seguinte:

{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }

Consulte Erros comuns para obter uma lista de outros erros comuns.

Reativando a geração automática de estatísticas DFE

Por padrão, a geração automática de DFE estatísticas já está ativada quando você ativaDFE. Se você desabilitar a geração automática, poderá reabilitá-la posteriormente da seguinte maneira:

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'

Se a solicitação for bem-sucedida, o código de HTTP resposta será 200 e a resposta será:

{ "status" : "200 OK" }

É possível confirmar se a geração automática está habilitada permitindo uma solicitação de status e conferindo se o campo autoCompute na resposta está definido como true.

Acionando manualmente a geração de estatísticas DFE

Você pode iniciar a geração de DFE estatísticas manualmente da seguinte forma:

curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'

Se a solicitação for bem-sucedida, a saída será a seguinte, com um código de HTTP retorno de 200:

{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }

O statisticsId na saída é o ID da execução da geração de estatísticas que está ocorrendo atualmente. Se uma execução já estiver em andamento no momento da solicitação, a solicitação vai gerar o ID dessa execução em vez de iniciar outra. Somente uma execução de geração de estatísticas pode ocorrer por vez.

Se ocorrer um failover enquanto DFE as estatísticas estão sendo geradas, o novo nó de gravação selecionará o último ponto de verificação processado e retomará a execução das estatísticas a partir daí.

Usando a StatsNumStatementsScanned CloudWatch métrica para monitorar o cálculo estatístico

A StatsNumStatementsScanned CloudWatch métrica retorna o número total de declarações escaneadas para cálculo estatístico desde a inicialização do servidor. Ela é atualizada em cada fatia de cálculo de estatísticas.

Toda vez que o cálculo de estatísticas é acionado, esse número aumenta e, quando nenhum cálculo está acontecendo, ele permanece constante. Portanto, a análise de um gráfico de valores StatsNumStatementsScanned ao longo do tempo oferece uma imagem bem clara de quando o cálculo de estatísticas estava acontecendo e com que rapidez:

Gráfico de valores StatsNumStatementsScanned métricos

Quando o cálculo está ocorrendo, a inclinação do grafo mostra a velocidade (quanto mais íngreme a inclinação, com maior rapidez as estatísticas são calculadas).

Se o grafo for simplesmente uma linha plana em 0, o atributo de estatísticas foi habilitado, mas nenhuma estatística foi calculada. Se o atributo de estatísticas tiver sido desativado ou se você estiver usando uma versão do mecanismo que não é compatível com o cálculo de estatísticas, StatsNumStatementsScanned não existe.

Conforme mencionado anteriormente, você pode desativar o cálculo de estatísticas usando as estatísticasAPI, mas deixá-lo desativado pode fazer com que as estatísticas não estejam atualizadas, o que, por sua vez, pode resultar na geração deficiente do plano de consulta para o DFE mecanismo.

Consulte Monitorando Neptune usando a Amazon CloudWatch para obter informações sobre como usar CloudWatch.

Usando a autenticação AWS Identity and Access Management (IAM) com endpoints de DFE estatísticas

Você pode acessar endpoints de DFE estatísticas de forma segura com IAM autenticação usando awscurl ou qualquer outra ferramenta que funcione com e. HTTPS IAM Consulte Usando awscurl com credenciais temporárias para se conectar com segurança a um cluster de banco de dados com a autenticação ativada IAM para saber como configurar as credenciais adequadas. Depois de fazer isso, é possível fazer uma solicitação de status como esta:

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db

Ou, por exemplo, você pode criar um JSON arquivo chamado request.json que contenha:

{ "mode" : "refresh" }

Depois, é possível iniciar a geração de estatísticas manualmente da seguinte forma:

awscurl "$STATISTICS_ENDPOINT" \ --region (your region) \ --service neptune-db \ -X POST -d @request.json

Excluindo estatísticas DFE

Você pode excluir todas as estatísticas no banco de dados fazendo uma HTTP DELETE solicitação ao endpoint de estatísticas:

curl -X "DELETE" "$STATISTICS_ENDPOINT"

Os códigos de HTTP devolução válidos são:

  • 200: a exclusão foi bem-sucedida.

    Nesse caso, uma resposta típica seria:

    { "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
  • 204: não havia estatísticas para excluir.

    Nesse caso, a resposta está em branco (sem resposta).

Se você enviar uma solicitação de exclusão a um endpoint de estatísticas em um nó de leitor, uma ReadOnlyViolationException será lançada.

Códigos de erro comuns para solicitação de DFE estatísticas

Veja a seguir uma lista de erros comuns que podem ocorrer quando você faz uma solicitação a um endpoint de estatísticas:

  • AccessDeniedException: Código de retorno: 400. Mensagem: Missing Authentication Token.

  • BadRequestException(para Gremlin eopenCypher) — Código de retorno:. 400 Mensagem: Bad route: /pg/statistics.

  • BadRequestException(para RDF dados) — Código de retorno:400. Mensagem: Bad route: /rdf/statistics.

  • InvalidParameterException: Código de retorno: 400. Mensagem: Statistics command parameter 'mode' has unsupported value 'the invalid value'.

  • MissingParameterException: Código de retorno: 400. Mensagem: Content-type header not specified..

  • ReadOnlyViolationException: Código de retorno: 400. Mensagem: Writes are not permitted on a read replica instance.

Por exemplo, se você fizer uma solicitação quando as estatísticas DFE e não estiverem habilitadas, você receberá uma resposta como a seguinte:

{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }