O cache de pesquisa do Neptune pode acelerar as consultas de leitura - 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á.

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

O Amazon Neptune implementa um cache de pesquisa que usa R5d a SSD base NVMe da instância para melhorar o desempenho 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 NVMe SSD volume onde eles podem ser acessados rapidamente.

Esse atributo está disponível a partir da Mecanismo do Amazon Neptune versão 1.0.4.2.R2 (01/06/2021).

As consultas de leitura que retornam as propriedades de um grande número de vértices e arestas, ou de muitos RDF triplos, podem ter uma alta latência se os valores ou literais das propriedades 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 propriedades ou RDF literais retornados 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

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

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 ao executar consultas de leitura (consulteMonitorando Neptune usando a Amazon CloudWatch).

  • 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 Gremlin profile API. 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

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 NVMe armazenamento local. SSD 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 neptune_lookup_cache 1 do cluster de banco de dados como (ativado) e cria o cache de pesquisa nessa instância específica. Em seguida, você pode usar o Status de instância API para confirmar que o cache foi ativado.

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 verifica no cache de pesquisa valores de propriedades RDF ou literais durante o processamento das 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 RDF -literal para uma instância do leitor R5d, o desempenho de leitura diminui um pouco enquanto o cache está esquentando. No entanto, quando o cache é aquecido, o desempenho de leitura acelera significativamente, e você também pode observar uma queda nos custos de E/S 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 RDF -literal para a instância do gravador, você começará a obter um desempenho de leitura aprimorado imediatamente, pois os valores já foram armazenados em cache lá.

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 desativar temporariamente o cache de pesquisa em todas as instâncias do seu cluster de banco de dados definindo o parâmetro do neptune_lookup_cache cluster de banco de dados como 0 (desativado). 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.