

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 delle query utilizzando la risposta a Query Insights
<a name="optimize-query-using-query-insights"></a>

Supponiamo che tu stia utilizzando Amazon Timestream LiveAnalytics per monitorare il consumo di energia in varie località. Immagina di avere due tabelle nel tuo database denominate `raw-metrics` e. `aggregate-metrics`

La `raw-metrics` tabella memorizza dati energetici dettagliati a livello di dispositivo e contiene le seguenti colonne:
+ Time stamp
+ Stato, ad esempio, Washington
+ ID dispositivo
+ Consumo energetico

I dati di questa tabella vengono raccolti e archiviati in modo minute-by-minute granulare. La tabella viene utilizzata `State` come CDPK.

La `aggregate-metrics` tabella memorizza il risultato di una query pianificata per aggregare i dati sul consumo energetico di tutti i dispositivi su base oraria. Questa tabella contiene le seguenti colonne:
+ Time stamp
+ Stato, ad esempio, Washington
+ Consumo energetico totale

La `aggregate-metrics` tabella memorizza questi dati con una granularità oraria. La tabella utilizza `State` come CDPK.

**Topics**
+ [Interrogazione del consumo energetico delle ultime 24 ore](#query-energy-consumption-data)
+ [Ottimizzazione della query per l'intervallo temporale](#optimize-query-temporal-range)
+ [Ottimizzazione dell'interrogazione per la copertura spaziale](#optimize-query-spatial-coverage)
+ [Prestazioni di interrogazione migliorate](#improved-query-performance)

## Interrogazione del consumo energetico delle ultime 24 ore
<a name="query-energy-consumption-data"></a>

Supponiamo di voler estrarre l'energia totale consumata a Washington nelle ultime 24 ore. Per trovare questi dati, puoi sfruttare i punti di forza di entrambe le tabelle: `raw-metrics` e. `aggregate-metrics` La `aggregate-metrics` tabella fornisce dati orari sul consumo energetico nelle ultime 23 ore, mentre la `raw-metrics` tabella offre dati granulari al minuto per l'ultima ora. Interrogando entrambe le tabelle, è possibile ottenere un quadro completo e preciso del consumo di energia a Washington nelle ultime 24 ore.

```
SELECT am.time, am.state, am.total_energy_consumption, 
rm.time, rm.state, rm.device_id, rm.energy_consumption
FROM 
 "metrics"."aggregate-metrics" am
 LEFT JOIN "metrics"."raw-metrics" rm ON am.state = rm.state
WHERE rm.time >= ago(1h) and rm.time < now()
```

Questa query di esempio viene fornita solo a scopo illustrativo e potrebbe non funzionare così com'è. Ha lo scopo di dimostrare il concetto, ma potrebbe essere necessario modificarlo per adattarlo al caso d'uso o all'ambiente specifico.

Dopo aver eseguito questa query, potresti notare che il tempo di risposta alla query è più lento del previsto. Per identificare la causa principale di questo problema di prestazioni, è possibile utilizzare la funzionalità Query Insights per analizzare le prestazioni della query e ottimizzarne l'esecuzione.

L'esempio seguente mostra la risposta a Query Insights.

```
queryInsightsResponse={
                QuerySpatialCoverage: {
                    Max: {
                        Value: 1.0,
                        TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/raw-metrics,
                        PartitionKey: [State]
                    }
                },
                QueryTemporalRange: {
                    Max: {
                        Value:31540000000000000 //365 days,
                        TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics
                    }
                },
                QueryTableCount: 2,
                OutputRows: 83,
                OutputBytes: 590
```

La risposta a Query Insights fornisce le seguenti informazioni:
+ Intervallo **temporale: la query ha analizzato un intervallo** temporale eccessivo di 365 giorni per la tabella. `aggregate-metrics` Ciò indica un uso inefficiente del filtro temporale.
+ **Copertura spaziale**: l'interrogazione ha analizzato l'intero intervallo spaziale (100%) della tabella. `raw-metrics` Ciò suggerisce che il filtro spaziale non viene utilizzato in modo efficace.

Se la query accede a più di una tabella, Query Insights fornisce le metriche per la tabella con il modello di accesso meno ottimale.

## Ottimizzazione della query per l'intervallo temporale
<a name="optimize-query-temporal-range"></a>

In base alla risposta a Query Insights, è possibile ottimizzare la query per l'intervallo temporale, come illustrato nell'esempio seguente.

```
SELECT am.time, am.state, am.total_energy_consumption, 
rm.time, rm.state, rm.device_id, rm.energy_consumption
FROM 
  "metrics"."aggregate-metrics" am
  LEFT JOIN "metrics"."raw-metrics" rm ON am.state = rm.state
WHERE 
  am.time >=  ago(23h) and am.time < now()
  AND rm.time >=  ago(1h) and rm.time < now()
  AND rm.state = 'Washington'
```

Se si esegue nuovamente il `QueryInsights` comando, viene restituita la seguente risposta.

```
queryInsightsResponse={
                QuerySpatialCoverage: {
                    Max: {
                        Value: 1.0,
                        TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics,
                        PartitionKey: [State]
                    }
                },
                QueryTemporalRange: {
                    Max: {
                        Value: 82800000000000 //23 hours,
                        TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics
                    }
                },
                QueryTableCount: 2,
                OutputRows: 83,
                OutputBytes: 590
```

Questa risposta mostra che la copertura spaziale della `aggregate-metrics` tabella è ancora del 100%, il che è inefficiente. La sezione seguente mostra come ottimizzare l'interrogazione per la copertura spaziale.

## Ottimizzazione dell'interrogazione per la copertura spaziale
<a name="optimize-query-spatial-coverage"></a>

In base alla risposta a Query Insights, è possibile ottimizzare la query per la copertura spaziale, come illustrato nell'esempio seguente.

```
SELECT am.time, am.state, am.total_energy_consumption, 
rm.time, rm.state, rm.device_id, rm.energy_consumption
FROM 
  "metrics"."aggregate-metrics" am
  LEFT JOIN "metrics"."raw-metrics" rm ON am.state = rm.state
WHERE 
  am.time >=  ago(23h) and am.time < now()
  AND am.state ='Washington'
  AND rm.time >=  ago(1h) and rm.time < now()
  AND rm.state = 'Washington'
```

Se si esegue nuovamente il `QueryInsights` comando, viene restituita la seguente risposta.

```
queryInsightsResponse={
                QuerySpatialCoverage: {
                    Max: {
                        Value: 0.02,
                        TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics,
                        PartitionKey: [State]
                    }
                },
                QueryTemporalRange: {
                    Max: {
                        Value: 82800000000000 //23 hours,
                        TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics
                    }
                },
                QueryTableCount: 2,
                OutputRows: 83,
                OutputBytes: 590
```

## Prestazioni di interrogazione migliorate
<a name="improved-query-performance"></a>

Dopo aver ottimizzato la query, Query Insights fornisce le seguenti informazioni:
+ La potatura temporale della `aggregate-metrics` tavola è di 23 ore. Ciò indica che vengono scansionate solo 23 ore dell'intervallo temporale.
+ La potatura spaziale per `aggregate-metrics` la tavola è 0,02. Ciò indica che viene scansionato solo il 2% dei dati relativi all'intervallo spaziale della tabella. La query analizza una parte molto piccola delle tabelle, con conseguente aumento delle prestazioni e riduzione dell'utilizzo delle risorse. La migliore efficienza di potatura indica che la query è ora ottimizzata per le prestazioni.