

Für ähnliche Funktionen wie Amazon Timestream für sollten Sie Amazon Timestream for LiveAnalytics InfluxDB in Betracht ziehen. Es bietet eine vereinfachte Datenaufnahme und Antwortzeiten im einstelligen Millisekundenbereich für Analysen in Echtzeit. [Erfahren](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html) Sie hier mehr.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Optimierung von Abfragen mithilfe von Query Insights Response
<a name="optimize-query-using-query-insights"></a>

Angenommen, Sie verwenden Amazon Timestream LiveAnalytics , um den Energieverbrauch an verschiedenen Standorten zu überwachen. Stellen Sie sich vor, Sie haben zwei Tabellen in Ihrer Datenbank mit dem Namen `raw-metrics` und`aggregate-metrics`.

Die `raw-metrics` Tabelle speichert detaillierte Energiedaten auf Geräteebene und enthält die folgenden Spalten:
+ Zeitstempel
+ Bundesstaat, zum Beispiel Washington
+ Geräte-ID
+ Energieverbrauch

Die Daten für diese Tabelle werden mit einer bestimmten minute-by-minute Granularität gesammelt und gespeichert. Die Tabelle wird `State` als CDPK verwendet.

In der `aggregate-metrics` Tabelle wird das Ergebnis einer geplanten Abfrage gespeichert, um die Energieverbrauchsdaten aller Geräte stündlich zu aggregieren. Diese Tabelle enthält die folgenden Spalten:
+ Zeitstempel
+ Bundesstaat, zum Beispiel Washington
+ Gesamter Energieverbrauch

In der `aggregate-metrics` Tabelle werden diese Daten mit stündlicher Granularität gespeichert. Die Tabelle wird `State` als CDPK verwendet.

**Topics**
+ [Der Energieverbrauch der letzten 24 Stunden wird abgefragt](#query-energy-consumption-data)
+ [Optimierung der Abfrage für den Zeitbereich](#optimize-query-temporal-range)
+ [Optimierung der Abfrage im Hinblick auf die räumliche Abdeckung](#optimize-query-spatial-coverage)
+ [Die Abfrageleistung wurde verbessert](#improved-query-performance)

## Der Energieverbrauch der letzten 24 Stunden wird abgefragt
<a name="query-energy-consumption-data"></a>

Angenommen, Sie möchten den gesamten Energieverbrauch in Washington in den letzten 24 Stunden ermitteln. Um diese Daten zu finden, können Sie die Stärken der beiden Tabellen nutzen: `raw-metrics` und`aggregate-metrics`. Die `aggregate-metrics` Tabelle enthält stündliche Energieverbrauchsdaten für die letzten 23 Stunden, während die `raw-metrics` Tabelle minutengenaue Daten für die letzte Stunde enthält. Wenn Sie beide Tabellen abfragen, können Sie sich ein vollständiges und genaues Bild vom Energieverbrauch in Washington in den letzten 24 Stunden machen.

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

Diese Beispielabfrage dient nur zur Veranschaulichung und funktioniert möglicherweise nicht so, wie sie ist. Sie soll das Konzept veranschaulichen, aber Sie müssen es möglicherweise an Ihren spezifischen Anwendungsfall oder Ihre Umgebung anpassen.

Nach der Ausführung dieser Abfrage stellen Sie möglicherweise fest, dass die Antwortzeit der Abfrage langsamer als erwartet ist. Um die Ursache für dieses Leistungsproblem zu ermitteln, können Sie die Query Insights-Funktion verwenden, um die Leistung der Abfrage zu analysieren und ihre Ausführung zu optimieren.

Das folgende Beispiel zeigt die Antwort auf 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
```

Die Query Insights-Antwort enthält die folgenden Informationen:
+ **Zeitlicher Bereich**: Die Abfrage hat einen zu großen Zeitbereich von 365 Tagen für die `aggregate-metrics` Tabelle durchsucht. Dies deutet auf eine ineffiziente Verwendung der zeitlichen Filterung hin.
+ **Räumliche Abdeckung**: Die Abfrage hat den gesamten räumlichen Bereich (100%) der `raw-metrics` Tabelle gescannt. Dies deutet darauf hin, dass die räumliche Filterung nicht effektiv genutzt wird.

Wenn Ihre Abfrage auf mehr als eine Tabelle zugreift, liefert Query Insights die Metriken für die Tabelle mit den suboptimalsten Zugriffsmustern.

## Optimierung der Abfrage für den Zeitbereich
<a name="optimize-query-temporal-range"></a>

Basierend auf der Query Insights-Antwort können Sie die Abfrage für den Zeitbereich optimieren, wie im folgenden Beispiel gezeigt.

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

Wenn Sie den `QueryInsights` Befehl erneut ausführen, wird die folgende Antwort zurückgegeben.

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

Diese Antwort zeigt, dass die räumliche Abdeckung der `aggregate-metrics` Tabelle immer noch 100% beträgt, was ineffizient ist. Im folgenden Abschnitt wird gezeigt, wie die Abfrage für die räumliche Abdeckung optimiert werden kann.

## Optimierung der Abfrage im Hinblick auf die räumliche Abdeckung
<a name="optimize-query-spatial-coverage"></a>

Auf der Grundlage der Query Insights-Antwort können Sie die Abfrage im Hinblick auf die räumliche Abdeckung optimieren, wie im folgenden Beispiel gezeigt.

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

Wenn Sie den `QueryInsights` Befehl erneut ausführen, wird die folgende Antwort zurückgegeben.

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

## Die Abfrageleistung wurde verbessert
<a name="improved-query-performance"></a>

Nach der Optimierung der Abfrage bietet Query Insights die folgenden Informationen:
+ Der Zeitaufwand für die `aggregate-metrics` Bereinigung der Tabelle beträgt 23 Stunden. Dies bedeutet, dass nur 23 Stunden des Zeitbereichs gescannt werden.
+ Der räumliche Schnitt für die `aggregate-metrics` Tabelle beträgt 0,02. Dies bedeutet, dass nur 2% der räumlichen Bereichsdaten der Tabelle gescannt werden. Die Abfrage scannt nur einen sehr kleinen Teil der Tabellen, was zu einer schnelleren Leistung und einer geringeren Ressourcenauslastung führt. Die verbesserte Bereinigungseffizienz deutet darauf hin, dass die Abfrage jetzt leistungsoptimiert ist.