

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# La cache di ricerca di Neptune può accelerare le query di lettura
<a name="feature-overview-lookup-cache"></a>

Amazon Neptune implementa una cache di ricerca che utilizza `R5d` l'SSD basato sull'istanza per migliorare le prestazioni NVMe di lettura per le query con ricerche frequenti e ripetitive di valori di proprietà o valori letterali RDF. La cache di ricerca memorizza temporaneamente questi valori nel volume SSD, dove è possibile accedervi rapidamente. NVMe 

Le query di lettura che restituiscono le proprietà di un gran numero di vertici e archi, o di molte triple RDF, possono avere una latenza elevata se i valori delle proprietà o i valori letterali devono essere recuperati dai volumi di archiviazione del cluster anziché dalla memoria. Gli esempi includono le query di lettura di lunga durata che restituiscono un gran numero di nomi completi da un grafo di identità o di indirizzi IP da un grafo di rilevamento delle frodi. All'aumentare del numero di valori di proprietà o di valori letterali RDF restituiti dalla query, la memoria disponibile diminuisce e l'esecuzione delle query può peggiorare notevolmente.

# Casi d'uso per la cache di ricerca di Neptune
<a name="feature-overview-lookup-cache-when-to-use"></a>

La cache di ricerca è utile solo quando le query di lettura restituiscono le proprietà di un numero molto elevato di vertici e archi o di triple RDF.

Per ottimizzare le prestazioni delle query, Amazon Neptune utilizza il tipo di istanza `R5d` per creare una cache di grandi dimensioni per tali valori di proprietà o valori letterali. Il recupero dalla cache è quindi molto più rapido rispetto al recupero dai volumi di archiviazione del cluster.

Come regola generale, vale la pena abilitare la cache di ricerca solo se sono soddisfatte tutte e tre le seguenti condizioni:
+ Si osserva un aumento della latenza nelle query di lettura.
+ Si osserva anche un calo della `BufferCacheHitRatio` [CloudWatch metrica](cw-metrics.md#cw-metrics-available) durante l'esecuzione di query di lettura (vedi). [Monitoraggio di Neptune tramite Amazon CloudWatch](cloudwatch.md)
+ Le query di lettura impiegano molto tempo per materializzare i valori restituiti prima del rendering dei risultati (vedi l'esempio del profilo Gremlin riportato di seguito per determinare quanti valori di proprietà vengono materializzati per una query).

**Nota**  
Questa funzionalità è utile *solo* nello scenario specifico descritto sopra. Ad esempio, la cache di ricerca non aiuta affatto le query di aggregazione. A meno che non si eseguano query che potrebbero trarre vantaggio dalla cache di ricerca, non c'è motivo di utilizzare un tipo di istanza `R5d` anziché un tipo di istanza `R5` equivalente e meno costoso.

Se si utilizza Gremlin, è possibile valutare i costi di materializzazione di una query con [API Gremlin `profile`](gremlin-profile-api.md). In "Operazioni di indice" viene mostrato il numero di termini materializzati durante l'esecuzione:

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

Il numero di termini non numerici che vengono materializzati è direttamente proporzionale al numero di ricerche di termini che Neptune deve eseguire.

# Utilizzo della cache di ricerca
<a name="feature-overview-lookup-cache-using"></a>

La cache di ricerca è disponibile solo su un tipo di istanza `R5d`, dove è abilitata automaticamente per impostazione predefinita. Le istanze `R5d` Neptune hanno le stesse specifiche `R5` delle istanze, oltre a un massimo di 1,8 TB di storage SSD locale. NVMe Le cache di ricerca sono specifiche dell'istanza e i carichi di lavoro che ne traggono vantaggio possono essere indirizzati specificamente alle istanze `R5d` di un cluster Neptune, mentre altri carichi di lavoro possono essere indirizzati a `R5` o ad altri tipi di istanze.

Per utilizzare la cache di ricerca su un'istanza Neptune, è sufficiente aggiornare l'istanza al tipo di istanza `R5d`. Quando lo fai, Neptune imposta automaticamente il parametro [neptune\$1lookup\$1cache](parameters.md#parameters-db-cluster-parameters-neptune_lookup_cache) `1` del cluster DB su (abilitato) e crea la cache di ricerca su quella particolare istanza. È quindi possibile utilizzare l'API [Stato dell'istanza](access-graph-status.md) per confermare che la cache è stata abilitata.

Analogamente, per disabilitare la cache di ricerca su una determinata istanza, dimensionare l'istanza da un tipo di istanza `R5d` a un tipo di istanza `R5` equivalente.

Quando viene avviata un'istanza `R5d`, la cache di ricerca è abilitata e in modalità di avvio a freddo, ovvero è vuota. Neptune verifica innanzitutto la presenza nella cache di ricerca di valori di proprietà o di valori letterali RDF durante l'elaborazione delle query e li aggiunge se non sono ancora presenti. In questo modo la cache si riscalda gradualmente.

Quando si indirizzano le query di lettura che richiedono ricerche di valori di proprietà o di valori letterali RDF a un'istanza di *lettura* R5d, le prestazioni di lettura diminuiscono leggermente durante il riscaldamento della cache. Quando la cache viene riscaldata, tuttavia, le prestazioni di lettura aumentano notevolmente e si può anche verificare un calo I/O dei costi legati alle ricerche che vengono inserite nella cache anziché nello storage del cluster. Migliora anche l'utilizzo della memoria.

Se l'istanza di *scrittura* è `R5d`, riscalda automaticamente la cache di ricerca a ogni operazione di scrittura. Questo approccio aumenta leggermente la latenza per le query di scrittura, ma riscalda la cache di ricerca in modo più efficiente. Quindi, se si indirizzano le query di lettura che richiedono ricerche di valori di proprietà o di valori letterali RDF all'istanza di scrittura, le prestazioni di lettura migliorano immediatamente, poiché i valori sono già stati memorizzati nella cache.

Inoltre, se si esegue lo strumento di caricamento in blocco su un'istanza di scrittura `R5d`, si può notare che le sue prestazioni sono leggermente ridotte a causa della cache.

Poiché la cache di ricerca è specifica per ogni nodo, la sostituzione dell'host ripristina la cache su un avvio a freddo.

È possibile disabilitare temporaneamente la cache di ricerca su tutte le istanze del cluster DB impostando il parametro del cluster [neptune\$1lookup\$1cache](parameters.md#parameters-db-cluster-parameters-neptune_lookup_cache) DB su (disabilitato). `0` In generale, tuttavia, ha più senso disabilitare la cache in istanze specifiche dimensionandole dal tipo di istanza `R5d` al tipo `R5`.