

如需與 Amazon Timestream for LiveAnalytics 類似的功能，請考慮使用 Amazon Timestream for InfluxDB。它提供簡化的資料擷取和單一位數毫秒查詢回應時間，以進行即時分析。[在這裡](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)進一步了解。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 最佳化 Amazon Timestream 中的資料存取
<a name="query-insights-optimize-data-access-pattern"></a>

您可以使用 Timestream 分割方案或資料組織技術，最佳化 Amazon Timestream 中的資料存取模式。

**Topics**
+ [時間串流分割方案](#query-insights-optimize-data-access-partitioning-scheme)
+ [資料整理](#query-insights-optimize-data-access-data-org)

## 時間串流分割方案
<a name="query-insights-optimize-data-access-partitioning-scheme"></a>

Amazon Timestream 使用高度可擴展的分割方案，其中每個 Timestream 資料表可以有數百個、數千個或甚至數百萬個獨立分割區。高可用性的分割區追蹤和索引服務可管理分割區，將故障的影響降至最低，並讓系統更具彈性。

![\[時間串流分割方案\]](http://docs.aws.amazon.com/zh_tw/timestream/latest/developerguide/images/QueryInsights/ts-partitioning-scheme.png)


## 資料整理
<a name="query-insights-optimize-data-access-data-org"></a>

Timestream 會將擷取的每個資料點儲存在單一分割區中。當您將資料擷取至 Timestream 資料表時，Timestream 會根據時間戳記、分割區索引鍵和資料中的其他內容屬性自動建立分割區。除了按時間分割資料 （時間分割） 之外，Timestream 也會根據選取的分割索引鍵和其他維度 （空間分割） 分割資料。此方法旨在分配寫入流量，並允許有效刪除查詢的資料。

查詢洞見功能提供查詢剔除效率的寶貴洞見，其中包括查詢空間涵蓋範圍和查詢時間涵蓋範圍。

**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) 指標提供已執行查詢的空間涵蓋範圍，以及空間剔除效率最差之資料表的洞見。此資訊可協助您識別分割策略中需要改進的領域，以增強空間剔除。`QuerySpatialCoverage` 指標範圍的值介於 0 到 1 之間。指標的值越低，在空間軸上剔除的查詢越最佳。例如，值 0.1 表示查詢掃描 10% 的空間軸。值 1 表示查詢掃描 100% 的空間軸。

**Example 使用查詢洞見來分析查詢的空間涵蓋範圍**  
假設您有一個存放天氣資料的 Timestream 資料庫。假設每小時從位於美國不同州的氣象站記錄溫度。假設您選擇 `State`做為[客戶定義的分割金鑰 ](customer-defined-partition-keys.md)(CDPK)，依狀態分割資料。  
假設您執行查詢，以擷取加州所有氣象站在特定日期下午 2 點到下午 4 點之間的平均溫度。下列範例顯示此案例的查詢。  

```
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';
```
使用查詢洞察功能，您可以分析查詢的空間涵蓋範圍。假設 `QuerySpatialCoverage` 指標傳回 0.02 的值。這表示查詢只會掃描 2% 的空間軸，這很有效。在這種情況下，查詢能夠有效地剔除空間範圍，只從加州擷取資料並忽略其他狀態的資料。  
相反地，如果`QuerySpatialCoverage`指標傳回 0.8 的值，則表示查詢掃描了 80% 的空間軸，效率較低。這可能表示需要改進分割策略，才能改善空間剔除。例如，您可以將分割區索引鍵選取為城市或區域，而非狀態。透過分析 `QuerySpatialCoverage` 指標，您可以識別最佳化分割策略並改善查詢效能的機會。

下圖顯示空間剔除不佳。

![\[指標提供的結果QuerySpatialCoverage顯示空間剔除不佳。\]](http://docs.aws.amazon.com/zh_tw/timestream/latest/developerguide/images/QueryInsights/QuerySpatialCoverageMetricResult.png)


若要提高空間剔除效率，您可以執行下列其中一項或兩項操作：
+ 新增 `measure_name`，即預設的剖析金鑰，或在查詢中使用 CDPK 述詞。
+ 如果您已新增上一點提及的屬性，請移除這些屬性或子句周圍的函數，例如 `LIKE`。

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

`QueryTemporalCoverage` 指標提供對已執行查詢掃描之時間範圍的洞見，包括掃描最大時間範圍的資料表。`QueryTemporalCoverage` 指標的值是以奈秒表示的時間範圍。此指標的值越低，暫時範圍上的查詢剔除越最佳。例如，查詢掃描最後幾分鐘的資料比掃描資料表整個時間範圍的查詢效能更高。

**Example**  
假設您有一個存放 IoT 感應器資料的 Timestream 資料庫，每分鐘從位於製造工廠的裝置進行測量。假設您已依 分割資料`device_ID`。  
假設您執行查詢，以擷取過去 30 分鐘內特定裝置的平均感應器讀數。下列範例顯示此案例的查詢。  

```
SELECT AVG(sensor_reading) 
FROM "sensor_data"."factory_1"
WHERE device_id = 'DEV_123' 
  AND time >= NOW() - INTERVAL 30 MINUTE and time < NOW();
```
使用查詢洞察功能，您可以分析查詢掃描的時間範圍。假設 `QueryTemporalCoverage` 指標傳回 1800000000000 奈秒 (30 分鐘） 的值。這表示查詢只會掃描最後 30 分鐘的資料，這是相對較窄的時間範圍。這是一個很好的跡象，因為它表示查詢能夠有效地剔除時間分割，並且只擷取請求的資料。  
相反地，如果`QueryTemporalCoverage`指標以奈秒為單位傳回 1 年的值，則表示查詢在資料表中掃描了一年的時間範圍，效率較低。這可能表示查詢未針對暫時剔除進行最佳化，您可以透過新增時間篩選條件來改善查詢。

下圖顯示時間剔除不佳。

![\[指標提供的結果QueryTemporalCoverage顯示時間剔除不佳。\]](http://docs.aws.amazon.com/zh_tw/timestream/latest/developerguide/images/QueryInsights/QueryTemporalCoverageMetricResult.png)


為了改善暫時剔除，我們建議您執行下列其中一項或所有動作：
+ 在查詢中新增缺少的時間述詞，並確認時間述詞正在剔除所需的時段。
+ 移除前後述詞的函數`MAX()`，例如 。
+ 將時間述詞新增至所有子查詢。如果您的子查詢正在聯結大型資料表或執行複雜的操作，這很重要。