最佳化 Amazon Timestream 中的資料存取 - Amazon Timestream

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

最佳化 Amazon Timestream 中的資料存取

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

時間串流分割方案

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

時間串流分割方案

資料組織

Timestream 會將擷取的每個資料點存放在單一分割區中。當您將資料擷取到 Timestream 資料表時,Timestream 會根據時間戳記、分割區金鑰和資料中的其他內容屬性自動建立分割區。除了按時間分割資料 (時間分割) 之外,Timestream 也會根據選取的分割金鑰和其他維度 (空間分割) 分割資料。此方法旨在分發寫入流量,並允許有效截斷查詢的資料。

查詢洞察功能提供查詢縮減效率的寶貴洞察,包括查詢空間涵蓋範圍和查詢時間涵蓋範圍。

QuerySpatialCoverage

QuerySpatialCoverage指標提供已執行查詢的空間涵蓋範圍,以及空間修剪效率最差資料表的深入見解。此資訊可協助您識別分割策略中需要改進的區域,以增強空間刪除。QuerySpatialCoverage 指標的值範圍介於 0 和 1 之間。指標的值越低,在空間軸上剪除的查詢越最佳。例如,值 0.1 表示查詢掃描 10% 的空間軸。值 1 表示查詢掃描 100% 的空間軸。

範例 使用查詢洞察分析查詢的空間涵蓋範圍

假設您有一個存放天氣資料的 Timestream 資料庫。假設每小時從位於美國不同州的氣象站記錄溫度。假設您選擇 State作為客戶定義的分割金鑰 (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% 的空間軸,這很有效。在此情況下,查詢能夠有效地剪除空間範圍,僅從 California 擷取資料,並忽略其他狀態的資料。

相反地,如果QuerySpatialCoverage指標傳回 0.8 的值,則表示查詢掃描了 80% 的空間軸,效率較低。這可能表示需要改進分割策略,才能改善空間修剪。例如,您可以選取分割區金鑰作為城市或區域,而非狀態。透過分析QuerySpatialCoverage指標,您可以識別最佳化分割策略並改善查詢效能的機會。

下圖顯示空間修剪不良。

指標提供的結果QuerySpatialCoverage顯示空間修剪不良。

若要提高空間修剪效率,您可以執行下列其中一項或兩項操作:

  • 新增 measure_name、預設剖析金鑰,或在查詢中使用述CDPK詞。

  • 如果您已新增上一個點中提到的屬性,請移除這些屬性或子句周圍的函數,例如 LIKE

QueryTemporalCoverage

QueryTemporalCoverage指標提供對已執行查詢掃描的時間範圍的洞察,包括掃描最大時間範圍的資料表。QueryTemporalCoverage 指標的值是以奈秒為單位的時間範圍。此指標的值越低,查詢在時間範圍內剪除越最佳。例如,查詢掃描最後幾分鐘的資料效能高於掃描資料表整個時間範圍的查詢。

範例

假設您有一個存放 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顯示時間修剪不良。

為了改善時間修剪,我們建議您執行下列其中一項或所有動作:

  • 在查詢中新增缺少的時間述詞,並確認時間述詞正在剪除所需的時間範圍。

  • 在時間述詞周圍移除 函數MAX(),例如 。

  • 將時間述詞新增至所有子查詢。如果您的子查詢正在加入大型資料表或執行複雜的操作,這很重要。