

Per funzionalità simili a Amazon Timestream for, prendi in considerazione Amazon Timestream LiveAnalytics per InfluxDB. Offre un'acquisizione semplificata dei dati e tempi di risposta alle query di una sola cifra di millisecondi per analisi in tempo reale. [Scopri](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html) di più qui.

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

# Ottimizzazione dell'accesso ai dati in Amazon Timestream
<a name="query-insights-optimize-data-access-pattern"></a>

Puoi ottimizzare i modelli di accesso ai dati in Amazon Timestream utilizzando lo schema di partizionamento Timestream o le tecniche di organizzazione dei dati.

**Topics**
+ [Schema di partizionamento Timestream](#query-insights-optimize-data-access-partitioning-scheme)
+ [Organizzazione dei dati](#query-insights-optimize-data-access-data-org)

## Schema di partizionamento Timestream
<a name="query-insights-optimize-data-access-partitioning-scheme"></a>

Amazon Timestream utilizza uno schema di partizionamento altamente scalabile in cui ogni tabella Timestream può avere centinaia, migliaia o persino milioni di partizioni indipendenti. Un servizio di tracciamento e indicizzazione delle partizioni ad alta disponibilità gestisce il partizionamento, minimizzando l'impatto degli errori e rendendo il sistema più resiliente.

![\[Schema di partizionamento Timestream\]](http://docs.aws.amazon.com/it_it/timestream/latest/developerguide/images/QueryInsights/ts-partitioning-scheme.png)


## Organizzazione dei dati
<a name="query-insights-optimize-data-access-data-org"></a>

Timestream memorizza ogni punto dati che acquisisce in una singola partizione. Quando si inseriscono i dati in una tabella Timestream, Timestream crea automaticamente partizioni in base ai timestamp, alla chiave di partizione e ad altri attributi di contesto presenti nei dati. Oltre a partizionare i dati nel tempo (partizionamento temporale), Timestream partiziona anche i dati in base alla chiave di partizionamento selezionata e ad altre dimensioni (partizionamento spaziale). Questo approccio è progettato per distribuire il traffico di scrittura e consentire un'efficace eliminazione dei dati per le query.

La funzionalità di analisi delle query fornisce informazioni preziose sull'efficienza di eliminazione delle query, che include la copertura spaziale delle query e la copertura temporale delle query.

**Topics**
+ [QuerySpatialCoverage](#query-insights-data-org-query-spatial-cvg)
+ [QueryTemporalCoverage](#query-insights-data-org-query-temporal-cvg)

### QuerySpatialCoverage
<a name="query-insights-data-org-query-spatial-cvg"></a>

La [QuerySpatialCoverage](https://docs.aws.amazon.com/timestream/latest/developerguide/API_query_QuerySpatialCoverage.html)metrica fornisce informazioni sulla copertura spaziale della query eseguita e sulla tabella con la riduzione spaziale più inefficiente. Queste informazioni possono aiutarti a identificare le aree di miglioramento nella strategia di partizionamento per migliorare la potatura spaziale. Il valore della `QuerySpatialCoverage` metrica è compreso tra 0 e 1. Più basso è il valore della metrica, più ottimale è l'eliminazione delle query sull'asse spaziale. Ad esempio, un valore di 0,1 indica che la query analizza il 10% dell'asse spaziale. Il valore 1 indica che l'interrogazione analizza il 100% dell'asse spaziale.

**Example Utilizzo di Query Insights per analizzare la copertura spaziale di un'interrogazione**  
Supponiamo che tu abbia un database Timestream che memorizza i dati meteorologici. Supponiamo che la temperatura venga registrata ogni ora dalle stazioni meteorologiche situate in diversi stati degli Stati Uniti d'America. Immagina di scegliere `State` come [chiave di partizionamento definita dal cliente (CDPK) per partizionare](customer-defined-partition-keys.md) i dati per stato.  
Supponiamo di eseguire un'interrogazione per recuperare la temperatura media di tutte le stazioni meteorologiche della California tra le 14:00 e le 16:00 di un giorno specifico. L'esempio seguente mostra la query per questo scenario.  

```
SELECT AVG(temperature) 
FROM "weather_data"."hourly_weather"
WHERE time >= '2024-10-01 14:00:00' AND time < '2024-10-01 16:00:00' 
  AND state = 'CA';
```
Utilizzando la funzionalità Query Insights, è possibile analizzare la copertura spaziale dell'interrogazione. Immagina che la `QuerySpatialCoverage` metrica restituisca un valore di 0,02. Ciò significa che la query ha scansionato solo il 2% dell'asse spaziale, il che è efficiente. In questo caso, l'interrogazione è stata in grado di ridurre efficacemente l'intervallo spaziale, recuperando solo i dati dalla California e ignorando i dati provenienti da altri stati.  
Al contrario, se la `QuerySpatialCoverage` metrica restituisse un valore di 0,8, indicherebbe che la query ha scansionato l'80% dell'asse spaziale, il che è meno efficiente. Ciò potrebbe suggerire che la strategia di partizionamento debba essere perfezionata per migliorare la potatura spaziale. Ad esempio, è possibile selezionare la chiave di partizione come città o regione anziché come stato. Analizzando la `QuerySpatialCoverage` metrica, è possibile identificare le opportunità per ottimizzare la strategia di partizionamento e migliorare le prestazioni delle query.

L'immagine seguente mostra una potatura spaziale scadente.

![\[Risultato fornito dalla QuerySpatialCoverage metrica che mostra una potatura spaziale scadente.\]](http://docs.aws.amazon.com/it_it/timestream/latest/developerguide/images/QueryInsights/QuerySpatialCoverageMetricResult.png)


Per migliorare l'efficienza della potatura spaziale, puoi eseguire una o entrambe le seguenti operazioni:
+ Aggiungi `measure_name` la chiave di partizionamento predefinita o utilizza i predicati CDPK nella tua query.
+ Se hai già aggiunto gli attributi menzionati nel punto precedente, rimuovi le funzioni relative a questi attributi o clausole, ad esempio. `LIKE`

### QueryTemporalCoverage
<a name="query-insights-data-org-query-temporal-cvg"></a>

La `QueryTemporalCoverage` metrica fornisce informazioni sull'intervallo temporale analizzato dalla query eseguita, inclusa la tabella con l'intervallo di tempo più ampio scansionato. Il valore della `QueryTemporalCoverage` metrica è l'intervallo di tempo rappresentato in nanosecondi. Più basso è il valore di questa metrica, più ottimale è l'eliminazione delle query sull'intervallo temporale. Ad esempio, una query che analizza i dati degli ultimi minuti è più efficiente di una query che analizza l'intero intervallo di tempo della tabella.

**Example**  
Supponiamo di avere un database Timestream che memorizza i dati dei sensori IoT, con misurazioni effettuate ogni minuto dai dispositivi situati in uno stabilimento di produzione. Supponiamo di aver partizionato i dati per. `device_ID`  
Supponiamo di eseguire una query per recuperare la lettura media del sensore per un dispositivo specifico negli ultimi 30 minuti. L'esempio seguente mostra l'interrogazione per questo scenario.  

```
SELECT AVG(sensor_reading) 
FROM "sensor_data"."factory_1"
WHERE device_id = 'DEV_123' 
  AND time >= NOW() - INTERVAL 30 MINUTE and time < NOW();
```
Utilizzando la funzionalità Query Insights, è possibile analizzare l'intervallo temporale analizzato dalla query. Immagina che la `QueryTemporalCoverage` metrica restituisca un valore di 1800000000000 nanosecondi (30 minuti). Ciò significa che la query ha analizzato solo i dati degli ultimi 30 minuti, ovvero un intervallo temporale relativamente ristretto. Questo è un buon segno perché indica che la query è stata in grado di ridurre efficacemente il partizionamento temporale e ha recuperato solo i dati richiesti.  
Al contrario, se la `QueryTemporalCoverage` metrica ha restituito un valore di 1 anno in nanosecondi, indica che la query ha analizzato un intervallo di tempo di un anno nella tabella, il che è meno efficiente. Ciò potrebbe suggerire che la query non è ottimizzata per l'eliminazione temporale e che è possibile migliorarla aggiungendo filtri temporali.

L'immagine seguente mostra una scarsa potatura temporale.

![\[Risultato fornito dalla QueryTemporalCoverage metrica che mostra una potatura temporale scadente.\]](http://docs.aws.amazon.com/it_it/timestream/latest/developerguide/images/QueryInsights/QueryTemporalCoverageMetricResult.png)


Per migliorare la potatura temporale, ti consigliamo di eseguire una o tutte le seguenti operazioni:
+ Aggiungi i predicati temporali mancanti nella query e assicurati che i predicati temporali riducano la finestra temporale desiderata.
+ Rimuovete le funzioni, ad esempio`MAX()`, i predicati temporali.
+ Aggiungi predicati temporali a tutte le sottointerrogazioni. Questo è importante se le tue sottoquery uniscono tabelle di grandi dimensioni o eseguono operazioni complesse.