

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

# O cache de pesquisa do Neptune pode acelerar as consultas de leitura
Cache de pesquisa

O Amazon Neptune implementa um cache de pesquisa que usa `R5d` o SSD baseado na instância para melhorar o desempenho NVMe de leitura em consultas com pesquisas frequentes e repetitivas de valores de propriedades ou literais RDF. O cache de pesquisa armazena temporariamente esses valores no volume NVMe SSD, onde eles podem ser acessados rapidamente.

As consultas de leitura que geram as propriedades de um grande número de vértices e bordas, ou de muitos triplos de RDF, poderão ter uma alta latência se os valores das propriedades ou literais precisarem ser recuperados dos volumes de armazenamento do cluster em vez da memória. Os exemplos incluem consultas de leitura de longa duração que geram um grande número de nomes completos de um grafo de identidade ou de endereços IP de um grafo de detecção de fraudes. À medida que o número de valores de propriedade ou literais RDF gerados pela consulta aumenta, a memória disponível diminui e a execução da consulta pode se degradar significativamente.

# Casos de uso do cache de pesquisa do Neptune
Casos de uso do cache de pesquisa

O cache de pesquisa só ajuda quando suas consultas de leitura estão gerando as propriedades de um número muito grande de vértices e bordas ou de triplos de RDF.

Para otimizar o desempenho da consulta, o Amazon Neptune usa o tipo de instância `R5d` para criar um grande cache para esses valores de propriedade ou literais. Recuperá-los do cache é, então, muito mais rápido do que recuperá-los dos volumes de armazenamento do cluster.

Como regra, só vale a pena habilitar o cache de pesquisa se todas as três condições a seguir forem atendidas:
+ Você tem observado um aumento na latência nas consultas de leitura.
+ Você também está observando uma queda na `BufferCacheHitRatio` [CloudWatch métrica](cw-metrics.md#cw-metrics-available) ao executar consultas de leitura (consulte[Monitorando Neptune usando a Amazon CloudWatch](cloudwatch.md)).
+ Suas consultas de leitura estão gastando muito tempo materializando os valores de retorno antes de renderizar os resultados (veja o exemplo do perfil do Gremlin abaixo para saber como determinar quantos valores de propriedade estão sendo materializados para uma consulta).

**nota**  
Esse atributo é útil *somente* no cenário específico descrito acima. Por exemplo, o cache de pesquisa não ajuda em nada nas consultas de agregação. A menos que você esteja executando consultas que se beneficiariam do cache de pesquisa, não há motivo para usar um tipo de instância `R5d` em vez de um tipo de instância `R5` equivalente e mais barato.

Se você estiver usando o Gremlin, poderá avaliar os custos de materialização de uma consulta com o [API `profile` do Gremlin](gremlin-profile-api.md). Em “Operações de índice”, ele mostra o número de termos materializados durante a execução:

```
Index Operations
Query execution:
    # of statement index ops: 3
    # of unique statement index ops: 3
    Duplication ratio: 1.0
    # of terms materialized: 5273
Serialization:
    # of statement index ops: 200
    # of unique statement index ops: 140
    Duplication ratio: 1.43
    # of terms materialized: 32693
```

O número de termos não numéricos que são materializados é diretamente proporcional ao número de pesquisas de termos que o Neptune precisa realizar.

# Usar o cache de pesquisa
Usar o cache

O cache de pesquisa só está disponível em um tipo de instância `R5d`, em que ele é ativado automaticamente por padrão. As instâncias do `R5d` Neptune têm as mesmas especificações `R5` das instâncias, além de até 1,8 TB de armazenamento SSD NVMe local. Os caches de pesquisa são específicos da instância, e as workloads que se beneficiam podem ser direcionadas especificamente para instâncias `R5d` em um cluster do Neptune, enquanto outras workloads podem ser direcionadas para `R5` ou outros tipos de instância.

Para usar o cache de pesquisa em uma instância do Neptune, basta atualizar essa instância para o tipo de instância `R5d`. Ao fazer isso, o Neptune define automaticamente o parâmetro do cluster de banco de dados [neptune\$1lookup\$1cache](parameters.md#parameters-db-cluster-parameters-neptune_lookup_cache) como `1` (habilitado) e cria o cache de pesquisa nessa instância específica. Depois, você pode usar a API [Status de instância](access-graph-status.md) para confirmar que o cache foi habilitado.

Da mesma forma, para desativar o cache de pesquisa em uma instância específica, reduza a escala da instância verticalmente de um tipo `R5d` para um tipo `R5` de instância equivalente.

Quando uma instância `R5d` é iniciada, o cache de pesquisa é habilitado e está no modo de inicialização a frio, o que significa que está vazio. O Neptune primeiro confere no cache de pesquisa os valores das propriedades ou literais de RDF enquanto processa as consultas e os adiciona se ainda não estiverem presentes. Isso aquece gradualmente o cache.

Quando você direciona as consultas de leitura que exigem pesquisas de valor de propriedade ou de literal de RDF para uma instância de *leitor* R5d, o desempenho de leitura se degrada um pouco enquanto o cache está se aquecendo. No entanto, quando o cache é aquecido, o desempenho de leitura aumenta significativamente e você também pode observar uma queda nos I/O custos relacionados às pesquisas que atingem o cache em vez do armazenamento em cluster. A utilização da memória também melhora.

Se sua instância de *gravador* for uma `R5d`, ela aquecerá seu cache de pesquisa automaticamente em cada operação de gravação. Essa abordagem aumenta um pouco a latência para consultas de gravação, mas aquece o cache de pesquisa com maior eficiência. Então, se você direcionar as consultas de leitura que exigem pesquisas de valor de propriedade ou literal de RDF para a instância de gravador, você começará a obter um desempenho de leitura aprimorado imediatamente, pois os valores já terão sido armazenados em cache no local.

Além disso, se você estiver executando o carregador em massa em uma instância de gravador `R5d`, poderá notar que seu desempenho está um pouco degradado em virtude do cache.

Como o cache de pesquisa é específico de cada nó, a substituição do host redefine o cache como uma inicialização a frio.

Você pode desabilitar temporariamente o cache de pesquisa em todas as instâncias do cluster de banco de dados definindo o parâmetro do cluster de banco de dados [neptune\$1lookup\$1cache](parameters.md#parameters-db-cluster-parameters-neptune_lookup_cache) como `0` (desabilitado). Em geral, no entanto, faz mais sentido desabilitar o cache em instâncias específicas, reduzindo a escala delas verticalmente de tipos de instância `R5d` para `R5`.