

Untuk kemampuan serupa dengan Amazon Timestream LiveAnalytics, pertimbangkan Amazon Timestream untuk InfluxDB. Ini menawarkan konsumsi data yang disederhanakan dan waktu respons kueri milidetik satu digit untuk analitik waktu nyata. Pelajari lebih lanjut [di sini](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan wawasan kueri untuk mengoptimalkan kueri di Amazon Timestream
<a name="using-query-insights"></a>

Wawasan kueri adalah fitur penyetelan kinerja yang membantu Anda mengoptimalkan kueri, meningkatkan kinerjanya, dan mengurangi biaya. Dengan wawasan kueri, Anda dapat menilai efisiensi pemangkasan berbasis kunci partisi temporal, berbasis waktu, dan spasial dari kueri Anda. Menggunakan wawasan kueri, Anda juga dapat mengidentifikasi area untuk perbaikan guna meningkatkan kinerja kueri. Selain itu, dengan wawasan kueri, Anda dapat mengevaluasi seberapa efektif kueri Anda menggunakan pengindeksan berbasis kunci berbasis waktu dan partisi untuk mengoptimalkan pengambilan data. Untuk mengoptimalkan kinerja kueri, penting untuk menyempurnakan parameter temporal dan spasial yang mengatur eksekusi kueri.

**Topics**
+ [Manfaat wawasan kueri](#query-insights-benefits)
+ [Mengoptimalkan akses data di Amazon Timestream](query-insights-optimize-data-access-pattern.md)
+ [Mengaktifkan wawasan kueri di Amazon Timestream](enable-query-insights.md)
+ [Mengoptimalkan kueri menggunakan respons wawasan kueri](optimize-query-using-query-insights.md)

## Manfaat wawasan kueri
<a name="query-insights-benefits"></a>

Berikut ini adalah manfaat utama menggunakan wawasan kueri: 
+ **Mengidentifikasi kueri yang tidak efisien** — Wawasan kueri memberikan informasi tentang pemangkasan tabel yang diakses oleh kueri berbasis waktu dan berbasis atribut. Informasi ini membantu Anda mengidentifikasi tabel yang diakses secara sub-optimal.
+ **Mengoptimalkan model data dan partisi** — Anda dapat menggunakan informasi wawasan kueri untuk mengakses dan menyempurnakan model data dan strategi partisi Anda.
+ **Kueri penyetelan** — Wawasan kueri menyoroti peluang untuk menggunakan indeks secara lebih efektif.

# Mengoptimalkan akses data di Amazon Timestream
<a name="query-insights-optimize-data-access-pattern"></a>

Anda dapat mengoptimalkan pola akses data di Amazon Timestream menggunakan skema partisi Timestream atau teknik organisasi data.

**Topics**
+ [Skema partisi Timestream](#query-insights-optimize-data-access-partitioning-scheme)
+ [Organisasi data](#query-insights-optimize-data-access-data-org)

## Skema partisi Timestream
<a name="query-insights-optimize-data-access-partitioning-scheme"></a>

Amazon Timestream menggunakan skema partisi yang sangat skalabel di mana setiap tabel Timestream dapat memiliki ratusan, ribuan, atau bahkan jutaan partisi independen. Layanan pelacakan dan pengindeksan partisi yang sangat tersedia mengelola partisi, meminimalkan dampak kegagalan dan membuat sistem lebih tangguh.

![\[Skema partisi Timestream\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/images/QueryInsights/ts-partitioning-scheme.png)


## Organisasi data
<a name="query-insights-optimize-data-access-data-org"></a>

Timestream menyimpan setiap titik data yang dicerna dalam satu partisi. Saat Anda menyerap data ke dalam tabel Timestream, Timestream secara otomatis membuat partisi berdasarkan stempel waktu, kunci partisi, dan atribut konteks lainnya dalam data. Selain mempartisi data tepat waktu (partisi temporal), Timestream juga mempartisi data berdasarkan kunci partisi yang dipilih dan dimensi lainnya (partisi spasial). Pendekatan ini dirancang untuk mendistribusikan lalu lintas tulis dan memungkinkan pemangkasan data yang efektif untuk kueri.

Fitur wawasan kueri memberikan wawasan berharga tentang efisiensi pemangkasan kueri, yang mencakup cakupan spasial kueri dan cakupan temporal kueri.

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

[QuerySpatialCoverage](https://docs.aws.amazon.com/timestream/latest/developerguide/API_query_QuerySpatialCoverage.html)Metrik memberikan wawasan tentang cakupan spasial dari kueri yang dieksekusi dan tabel dengan pemangkasan spasial yang paling tidak efisien. Informasi ini dapat membantu Anda mengidentifikasi area perbaikan dalam strategi partisi untuk meningkatkan pemangkasan spasial. Nilai untuk rentang `QuerySpatialCoverage` metrik antara 0 dan 1. Semakin rendah nilai metrik, semakin optimal pemangkasan kueri pada sumbu spasial. Misalnya, nilai 0,1 menunjukkan bahwa kueri memindai 10% sumbu spasial. Nilai 1 menunjukkan bahwa kueri memindai 100% sumbu spasial.

**Example Menggunakan wawasan kueri untuk menganalisis cakupan spasial kueri**  
Katakanlah Anda memiliki database Timestream yang menyimpan data cuaca. Asumsikan bahwa suhu dicatat setiap jam dari stasiun cuaca yang terletak di berbagai negara bagian di Amerika Serikat. Bayangkan Anda memilih `State` sebagai kunci [partisi yang ditentukan pelanggan (CDPK) untuk mempartisi](customer-defined-partition-keys.md) data berdasarkan status.  
Misalkan Anda menjalankan kueri untuk mengambil suhu rata-rata untuk semua stasiun cuaca di California antara jam 2 siang dan 4 sore pada hari tertentu. Contoh berikut menunjukkan query untuk skenario ini.  

```
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';
```
Dengan menggunakan fitur wawasan kueri, Anda dapat menganalisis cakupan spasial kueri. Bayangkan bahwa `QuerySpatialCoverage` metrik mengembalikan nilai 0,02. Ini berarti bahwa kueri hanya memindai 2% sumbu spasial, yang efisien. Dalam hal ini, kueri dapat secara efektif memangkas rentang spasial, hanya mengambil data dari California dan mengabaikan data dari negara bagian lain.  
Sebaliknya, jika `QuerySpatialCoverage` metrik mengembalikan nilai 0,8, itu akan menunjukkan bahwa kueri memindai 80% sumbu spasial, yang kurang efisien. Ini mungkin menunjukkan bahwa strategi partisi perlu disempurnakan untuk meningkatkan pemangkasan spasial. Misalnya, Anda dapat memilih kunci partisi sebagai kota atau wilayah, bukan negara bagian. Dengan menganalisis `QuerySpatialCoverage` metrik, Anda dapat mengidentifikasi peluang untuk mengoptimalkan strategi partisi Anda dan meningkatkan kinerja kueri Anda.

Gambar berikut menunjukkan pemangkasan spasial yang buruk.

![\[Hasil yang diberikan oleh QuerySpatialCoverage metrik yang menunjukkan pemangkasan spasial yang buruk.\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/images/QueryInsights/QuerySpatialCoverageMetricResult.png)


Untuk meningkatkan efisiensi pemangkasan spasial, Anda dapat melakukan salah satu atau kedua hal berikut:
+ Tambahkan`measure_name`, kunci parisi default, atau gunakan predikat CDPK dalam kueri Anda.
+ Jika Anda telah menambahkan atribut yang disebutkan di poin sebelumnya, hapus fungsi di sekitar atribut atau klausa ini, seperti. `LIKE`

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

`QueryTemporalCoverage`Metrik memberikan wawasan tentang rentang temporal yang dipindai oleh kueri yang dieksekusi, termasuk tabel dengan rentang waktu terbesar yang dipindai. Nilai untuk `QueryTemporalCoverage` metrik adalah rentang waktu yang diwakili dalam nanodetik. Semakin rendah nilai metrik ini, semakin optimal pemangkasan kueri pada rentang temporal. Misalnya, pemindaian kueri beberapa menit terakhir data lebih berkinerja daripada kueri yang memindai seluruh rentang waktu tabel.

**Example**  
Katakanlah Anda memiliki database Timestream yang menyimpan data sensor IoT, dengan pengukuran yang dilakukan setiap menit dari perangkat yang berlokasi di pabrik. Asumsikan bahwa Anda telah mempartisi data Anda dengan. `device_ID`  
Misalkan Anda menjalankan kueri untuk mengambil pembacaan sensor rata-rata untuk perangkat tertentu selama 30 menit terakhir. Contoh berikut menunjukkan query untuk skenario ini.  

```
SELECT AVG(sensor_reading) 
FROM "sensor_data"."factory_1"
WHERE device_id = 'DEV_123' 
  AND time >= NOW() - INTERVAL 30 MINUTE and time < NOW();
```
Dengan menggunakan fitur wawasan kueri, Anda dapat menganalisis rentang temporal yang dipindai oleh kueri. Bayangkan `QueryTemporalCoverage` metrik mengembalikan nilai 1800000000000 nanodetik (30 menit). Ini berarti bahwa kueri hanya memindai 30 menit terakhir data, yang merupakan rentang temporal yang relatif sempit. Ini adalah pertanda baik karena ini menunjukkan bahwa kueri dapat secara efektif memangkas partisi temporal dan hanya mengambil data yang diminta.  
Sebaliknya, jika `QueryTemporalCoverage` metrik mengembalikan nilai 1 tahun dalam nanodetik, ini menunjukkan bahwa kueri memindai rentang waktu satu tahun dalam tabel, yang kurang efisien. Ini mungkin menunjukkan bahwa kueri tidak dioptimalkan untuk pemangkasan temporal, dan Anda dapat memperbaikinya dengan menambahkan filter waktu.

Gambar berikut menunjukkan pemangkasan temporal yang buruk.

![\[Hasil yang diberikan oleh QueryTemporalCoverage metrik yang menunjukkan pemangkasan temporal yang buruk.\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/images/QueryInsights/QueryTemporalCoverageMetricResult.png)


Untuk meningkatkan pemangkasan temporal, kami sarankan Anda melakukan satu atau semua hal berikut:
+ Tambahkan predikat waktu yang hilang dalam kueri dan pastikan predikat waktu memangkas jendela waktu yang diinginkan.
+ Hapus fungsi, seperti`MAX()`, sekitar predikat waktu.
+ Tambahkan predikat waktu ke semua sub kueri. Ini penting jika sub kueri Anda bergabung dengan tabel besar atau melakukan operasi yang kompleks.

# Mengaktifkan wawasan kueri di Amazon Timestream
<a name="enable-query-insights"></a>

Anda dapat mengaktifkan wawasan kueri untuk kueri Anda dengan wawasan yang dikirimkan langsung melalui respons kueri. Mengaktifkan wawasan kueri tidak memerlukan infrastruktur tambahan atau menimbulkan biaya tambahan. Saat Anda mengaktifkan wawasan kueri, ia menampilkan bidang metadata terkait kinerja kueri selain hasil kueri sebagai bagian dari respons kueri Anda. Anda dapat menggunakan informasi ini untuk menyetel kueri untuk meningkatkan kinerja kueri dan mengurangi biaya kueri.

Untuk informasi tentang mengaktifkan wawasan kueri, lihat. [Jalankankueri](console_timestream.md#console_timestream.queries.using-console)

Untuk melihat contoh tanggapan yang ditampilkan dengan mengaktifkan wawasan kueri, lihat [Contoh untuk kueri terjadwal](https://docs.aws.amazon.com/timestream/latest/developerguide/API_query_ExecuteScheduledQuery.html#API_query_ExecuteScheduledQuery_Examples).

**catatan**  
Saat Anda mengaktifkan wawasan kueri, nilainya membatasi kueri menjadi 1 kueri per detik (QPS). Untuk menghindari dampak kinerja, kami sangat menyarankan agar Anda mengaktifkan wawasan kueri hanya selama fase evaluasi kueri Anda, sebelum menerapkannya ke produksi.
Wawasan yang diberikan dalam wawasan kueri pada akhirnya konsisten, yang berarti mereka mungkin berubah karena data baru terus dicerna ke dalam tabel.

# Mengoptimalkan kueri menggunakan respons wawasan kueri
<a name="optimize-query-using-query-insights"></a>

Katakanlah Anda menggunakan Amazon Timestream LiveAnalytics untuk memantau konsumsi energi di berbagai lokasi. Bayangkan bahwa Anda memiliki dua tabel dalam database Anda bernama `raw-metrics` dan`aggregate-metrics`.

`raw-metrics`Tabel menyimpan data energi terperinci di tingkat perangkat dan berisi kolom berikut:
+ Stempel waktu
+ Negara, misalnya, Washington
+ ID Perangkat
+ Konsumsi energi

Data untuk tabel ini dikumpulkan dan disimpan pada minute-by-minute perincian. Tabel menggunakan `State` sebagai CDPK.

`aggregate-metrics`Tabel menyimpan hasil kueri terjadwal untuk mengumpulkan data konsumsi energi di semua perangkat setiap jam. Tabel ini berisi kolom berikut:
+ Stempel waktu
+ Negara, misalnya, Washington
+ Konsumsi energi total

`aggregate-metrics`Tabel menyimpan data ini pada perincian per jam. Tabel menggunakan `State` sebagai CDPK.

**Topics**
+ [Meminta konsumsi energi selama 24 jam terakhir](#query-energy-consumption-data)
+ [Mengoptimalkan kueri untuk rentang temporal](#optimize-query-temporal-range)
+ [Mengoptimalkan kueri untuk cakupan spasial](#optimize-query-spatial-coverage)
+ [Peningkatan kinerja kueri](#improved-query-performance)

## Meminta konsumsi energi selama 24 jam terakhir
<a name="query-energy-consumption-data"></a>

Katakanlah Anda ingin mengekstrak total energi yang dikonsumsi di Washington selama 24 jam terakhir. Untuk menemukan data ini, Anda dapat memanfaatkan kekuatan kedua tabel: `raw-metrics` dan`aggregate-metrics`. `aggregate-metrics`Tabel menyediakan data konsumsi energi per jam selama 23 jam terakhir, sedangkan `raw-metrics` tabel menawarkan data menit-granular selama satu jam terakhir. Dengan menanyakan di kedua tabel, Anda bisa mendapatkan gambaran konsumsi energi yang lengkap dan akurat di Washington selama 24 jam terakhir.

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

Contoh kueri ini disediakan untuk tujuan ilustrasi saja dan mungkin tidak berfungsi apa adanya. Ini dimaksudkan untuk mendemonstrasikan konsep, tetapi Anda mungkin perlu memodifikasinya agar sesuai dengan kasus penggunaan atau lingkungan khusus Anda.

Setelah menjalankan kueri ini, Anda mungkin memperhatikan bahwa waktu respons kueri lebih lambat dari yang diharapkan. Untuk mengidentifikasi akar penyebab masalah kinerja ini, Anda dapat menggunakan fitur wawasan kueri untuk menganalisis kinerja kueri dan mengoptimalkan pelaksanaannya.

Contoh berikut menunjukkan respons wawasan kueri.

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

Respons wawasan kueri memberikan informasi berikut:
+ **Rentang temporal**: Kueri memindai rentang temporal 365 hari yang berlebihan untuk tabel. `aggregate-metrics` Ini menunjukkan penggunaan penyaringan temporal yang tidak efisien.
+ **Cakupan spasial**: Kueri memindai seluruh rentang spasial (100%) `raw-metrics` tabel. Ini menunjukkan bahwa penyaringan spasial tidak digunakan secara efektif.

Jika kueri Anda mengakses lebih dari satu tabel, wawasan kueri menyediakan metrik untuk tabel dengan pola akses paling sub-optimal.

## Mengoptimalkan kueri untuk rentang temporal
<a name="optimize-query-temporal-range"></a>

Berdasarkan respons wawasan kueri, Anda dapat mengoptimalkan kueri untuk rentang temporal seperti yang ditunjukkan pada contoh berikut.

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

Jika Anda menjalankan `QueryInsights` perintah lagi, ia mengembalikan respons berikut.

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

Tanggapan ini menunjukkan bahwa cakupan spasial untuk `aggregate-metrics` tabel masih 100%, yang tidak efisien. Bagian berikut menunjukkan cara mengoptimalkan kueri untuk cakupan spasial.

## Mengoptimalkan kueri untuk cakupan spasial
<a name="optimize-query-spatial-coverage"></a>

Berdasarkan respons wawasan kueri, Anda dapat mengoptimalkan kueri untuk cakupan spasial seperti yang ditunjukkan pada contoh berikut.

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

Jika Anda menjalankan `QueryInsights` perintah lagi, ia mengembalikan respons berikut.

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

## Peningkatan kinerja kueri
<a name="improved-query-performance"></a>

Setelah mengoptimalkan kueri, wawasan kueri memberikan informasi berikut:
+ Pemangkasan temporal untuk `aggregate-metrics` meja adalah 23 jam. Ini menunjukkan bahwa hanya 23 jam rentang temporal yang dipindai.
+ Pemangkasan spasial untuk `aggregate-metrics` tabel adalah 0,02. Ini menunjukkan bahwa hanya 2% dari data rentang spasial tabel yang dipindai. Kueri memindai sebagian kecil tabel yang mengarah ke kinerja yang cepat dan pemanfaatan sumber daya yang berkurang. Efisiensi pemangkasan yang ditingkatkan menunjukkan bahwa kueri sekarang dioptimalkan untuk kinerja.