

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á.

# Gerenciar estatísticas a serem utilizadas pelo DFE do Neptune
<a name="neptune-dfe-statistics"></a>

**nota**  
O suporte ao openCypher depende do mecanismo de consulta DFE no Neptune.  
O mecanismo DFE foi disponibilizado pela primeira vez no modo de laboratório na [versão 1.0.3.0 do mecanismo do Neptune](engine-releases-1.0.3.0.md) e, a partir da [versão 1.0.5.0 do mecanismo do Neptune](engine-releases-1.0.5.0.md), ele se tornou habilitado por padrão, mas somente para uso com dicas de consulta e para suporte ao openCypher.   
A partir da [versão 1.1.1.0 do mecanismo do Neptune](engine-releases-1.1.1.0.md), o mecanismo DFE não está mais no modo de laboratório e agora é controlado usando o parâmetro de instância [neptune\$1dfe\$1query\$1engine](parameters.md#parameters-instance-parameters-neptune_dfe_query_engine) no grupo de parâmetros de banco de dados de uma instância.

O mecanismo DFE usa informações sobre os dados no grafo do 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](engine-releases-1.2.1.0.md), você pode recuperar [informações resumidas](neptune-graph-summary.md) sobre seu gráfico a partir dessas estatísticas usando a [GetGraphSummary](iam-dp-actions.md#getgraphsummary)API ou o endpoint. `summary`

No momento, essas estatísticas do DFE são geradas novamente sempre que mais de 10% dos dados no grafo são alterados ou quando as estatísticas mais recentes têm mais de dez 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.

É possível gerenciar a geração de estatísticas do DFE por meio de um dos seguintes endpoints:
+ `https://your-neptune-host:port/rdf/statistics ` (para o SPARQL).
+ `https://your-neptune-host:port/propertygraph/statistics` (para Gremlin e openCypher) e sua versão alternativa: `https://your-neptune-host:port/pg/statistics`.

**nota**  
A partir da [versão 1.1.1.0 do mecanismo](engine-releases-1.1.1.0.md), 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 mecanismo](engine-releases-1.2.1.0.md), o endpoint de estatísticas do SPARQL (`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 endpoints URLs.

**nota**  
Se um endpoint de estatísticas do DFE estiver em uma instância de leitor, as únicas solicitações que ele poderá processar serão [solicitações de status](#neptune-dfe-statistics-status). Outras solicitações falharão com uma `ReadOnlyViolationException`.

## Limites de tamanho para geração de estatísticas do DFE
<a name="neptune-dfe-statistics-limits"></a>

No momento, a geração de estatísticas do DFE será 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 estatísticas do DFE
<a name="neptune-dfe-statistics-status"></a>

É possível conferir o status atual das estatísticas do DFE usando a seguinte solicitação `curl`:

```
curl -G "$STATISTICS_ENDPOINT"
```

A resposta a uma solicitação de status contém os seguintes campos:
+ `status`: o código de retorno HTTP 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](#neptune-dfe-statistics-errors).
+ `payload`:
  + `autoCompute`: (booliano) indica se a geração automática de estatísticas está habilitada ou não.
  + `active`: (booliano) indica se a geração automática de estatísticas do DFE está ou não habilitada.
  + `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`: a hora UTC na qual as estatísticas do DFE foram geradas mais recentemente, no formato ISO 8601.
**nota**  
Antes da [versão 1.2.1.0 do mecanismo](engine-releases-1.2.1.0.md), 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](engine-releases-1.2.1.0.md), 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 as estatísticas do DFE 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 ocorrer uma falha na geração de estatísticas do DFE, por exemplo, porque excedeu o [limite de tamanho das estatísticas](#neptune-dfe-statistics-limits), a resposta será semelhante a esta:

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

## Desabilitar a geração automática de estatísticas do DFE
<a name="neptune-dfe-statistics-auto-disable"></a>

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

É 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 resposta HTTP 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](#neptune-dfe-statistics-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 desabilitar a geração automática para uma instância de leitor e não para a instância de gravador do cluster de banco de dados, ocorrerá uma falha na solicitação com um código de retorno HTTP 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](#neptune-dfe-statistics-errors) para obter uma lista de outros erros comuns.

## Reabilitar a geração automática de estatísticas do DFE
<a name="neptune-dfe-statistics-auto-re-enable"></a>

Por padrão, a geração automática de estatísticas do DFE já é habilitada quando você habilita o DFE. 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 resposta HTTP 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](#neptune-dfe-statistics-status) e conferindo se o campo `autoCompute` na resposta está definido como `true`.

## Acionar manualmente a geração de estatísticas do DFE
<a name="neptune-dfe-statistics-manual"></a>

É possível iniciar a geração de estatísticas do DFE 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 retorno HTTP 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 as estatísticas do DFE estiverem sendo geradas, o novo nó de gravador 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 name="neptune-dfe-statistics-monitoring"></a>

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\]](http://docs.aws.amazon.com/pt_br/neptune/latest/userguide/images/StatsNumStatementsScanned-graph.png)


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, é possível desabilitar o cálculo de estatísticas usando a API de estatísticas, mas deixá-lo desabilitado pode fazer com que as estatísticas não estejam atualizadas, o que, por sua vez, pode ocasionar a geração deficiente do plano de consulta para o mecanismo do DFE.

Consulte [Monitorando Neptune usando a Amazon CloudWatch](cloudwatch.md) para obter informações sobre como usar CloudWatch.

## Usando a autenticação AWS Identity and Access Management (IAM) com endpoints de estatísticas do DFE
<a name="neptune-dfe-statistics-iam-auth"></a>

É possível acessar os endpoints de estatísticas do DFE de forma segura com a autenticação do IAM usando [awscurl](https://github.com/okigan/awscurl) ou qualquer outra ferramenta que funcione com HTTPS e IAM. Consulte [Usar `awscurl` com credenciais temporárias para se conectar com segurança a um cluster de banco de dados com a autenticação do IAM habilitada](iam-auth-connect-command-line.md#iam-auth-connect-awscurl) 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 arquivo JSON denominado `request.json` que contém:

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

## Excluir estatísticas do DFE
<a name="neptune-dfe-statistics-delete"></a>

É possível excluir todas as estatísticas no banco de dados fazendo uma solicitação HTTP DELETE para o endpoint de estatísticas:

```
curl -X "DELETE" "$STATISTICS_ENDPOINT"
```

Os códigos de retorno HTTP 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 estatísticas do DFE
<a name="neptune-dfe-statistics-errors"></a>

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 e openCypher): *Código de retorno:* `400`. *Mensagem:* `Bad route: /pg/statistics`.
+ `BadRequestException` (para dados do RDF): *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 o DFE e as estatísticas não estiverem habilitados, receberá uma resposta como a seguinte:

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