本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理要使用的 Neptune DFE 統計資料
注意
支援 for openCypher 取決於 Neptune 中的 DFE 查詢引擎。
DFE 引擎在 Neptune 引擎版本 1.0.3.0 的實驗室模式中首次可用,從 Neptune 引擎版本 1.0.5.0 開始,預設會啟用,但僅適用於查詢提示和 for openCypher 支援。
從 Neptune 引擎 1.1.1.0 版開始,DFE 引擎不再處於實驗室模式,現在使用neptune_dfe_query_engine執行個體的資料庫參數群組中的執行個體參數進行控制。
DFE 引擎會使用 Neptune 圖表中資料的相關資訊,在規劃查詢執行時做出有效的權衡。這項資訊採取統計資料的形式,其中包括所謂的特性集和述詞統計資料,可以引導查詢規劃。
從引擎 1.2.1.0 版開始,您可以使用 GetGraphSummary API或summary
端點從這些統計資料中擷取圖表的摘要資訊。
只要圖形中超過 10% 的資料變更,或最新統計資料超過 10 天,這些 DFE 統計資料目前就會重新產生。不過,這些觸發條件日後可能會變更。
注意
統計資料產生會在 T3
和 T4g
執行個體上停用,因為它可能超過這些執行個體類型的記憶體容量。
您可以透過下列其中一個端點來管理 DFE 統計資料的產生:
https://
(適用於 SPARQL)。your-neptune-host
:port
/rdf/statisticshttps://
(適用於 Gremlin 和 openCypher) 及其替代版本:your-neptune-host
:port
/propertygraph/statisticshttps://
。your-neptune-host
:port
/pg/statistics
注意
從引擎 1.1.1.0 版開始,Gramlin 統計資料端點 (https://
) 已被棄用以支持 your-neptune-host
:port
/gremlin/statisticspropertygraph
或 pg
端點。基於回溯相容性仍支援它,但可能會在未來的版本中將其移除。
截至引擎 1.2.1.0 版,SPARQL 統計資料端點 (https://
) 已棄用,以有利於your-neptune-host
:port
/sparql/statisticsrdf
端點。基於回溯相容性仍支援它,但可能會在未來的版本中將其移除。
在下列範例中, $STATISTICS_ENDPOINT
代表任何這些端點 URLs。
注意
如果 DFE 統計資料端點位於讀取器執行個體上,則其可處理的唯一請求是狀態請求。其他請求將由於 ReadOnlyViolationException
而失敗。
產生 DFE 統計資料的大小限制
目前,如果達到以下任一大小限制,DFE 統計資料產生會停止:
所產生的特性集數目不得超過 50,000 個。
所產生的述詞統計資料數目不得超過一百萬個。
這些限制可能會變更。
DFE 統計資料的目前狀態
您可以使用下列curl
請求檢查 DFE 統計資料的目前狀態:
curl -G "$STATISTICS_ENDPOINT"
對狀態請求的回應包含下列欄位:
status
– 請求的 HTTP 傳回碼。如果請求成功,則傳回碼為200
。如需常見錯誤的清單,請參閱 常見錯誤。-
payload
:autoCompute
– (布林值) 指示是否啟用自動產生統計資料。active
– (布林值) 指出是否完全啟用 DFE 統計資料產生。statisticsId
– 報告目前統計資料產生執行的 ID。值-1
指示尚未產生任何統計資料。-
date
– 最近產生 DFE 統計資料的 Word UTC時間,格式為 ISO 8601。注意
在引擎 1.2.1.0 版之前,這是以分鐘精確度表示,但從引擎 1.2.1.0 版開始,它是以毫秒精確度表示 (例如,
2023-01-24T00:47:43.319Z
)。 note
– 關於統計資料無效情況下問題的說明。-
signatureInfo
– 包含統計資料中所產生之特性集的相關資訊 (在引擎 1.2.1.0 版之前,此欄位已命名為summary
)。這些通常不能直接採取行動:signatureCount
– 所有特性集的簽章總數。instanceCount
– 特性集執行個體的總數。predicateCount
– 唯一述詞的總數。
未產生統計資料時,對狀態請求的回應如下所示:
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }
如果有可用的 DFE 統計資料,回應如下所示:
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }
如果產生 DFE 統計資料失敗,例如因為它超過統計資料大小限制,回應如下所示:
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }
停用自動產生 DFE 統計資料
根據預設,當您啟用 DFE 時,會啟用自動產生 DFE 統計資料。
您可以停用自動產生,如下所示:
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'
如果請求成功,則 HTTP 回應碼為 200
,回應為:
{ "status" : "200 OK" }
您可以發出狀態請求並檢查回應中的 autoCompute
欄位是否設定為 false
,以確認已停用自動產生。
停用自動產生統計資料並不會終止進行中的統計資料計算。
如果您請求停用對讀取器執行個體的自動產生,而不是資料庫叢集的寫入器執行個體,則請求會失敗,並傳回 HTTP 碼為 400,輸出如下所示:
{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }
如需其他常見錯誤的清單,請參閱 常見錯誤。
重新啟用自動產生 DFE 統計資料
根據預設,當您啟用 DFE 時,已啟用自動產生 DFE 統計資料。如果您停用自動產生,您可以稍後重新啟用它,如下所示:
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'
如果請求成功,則 HTTP 回應碼為 200
,回應為:
{ "status" : "200 OK" }
您可以發出狀態請求並檢查回應中的 autoCompute
欄位是否設定為 true
,以確認已啟用自動產生。
手動觸發產生 DFE 統計資料
您可以手動啟動 DFE 統計資料產生,如下所示:
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'
如果請求成功,輸出如下所示,HTTP 傳回碼為 200:
{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }
輸出中的 statisticsId
是目前正在發生之統計資料產生執行的識別符。如果執行已在請求時已處理中,則請求會傳回該執行的 ID,而不是啟動新的 ID。一次僅能發生一個統計資料產生執行。
如果在產生 DFE 統計資料時發生容錯移轉,新的寫入器節點將取得最後一個處理的檢查點,並繼續從該處執行統計資料。
使用 StatsNumStatementsScanned
CloudWatch 指標監控統計資料運算
StatsNumStatementsScanned
CloudWatch 指標會傳回自伺服器啟動以來針對統計資料運算掃描的陳述式總數。它是在每個統計資料計算部分處更新。
每次觸發統計資料計算時,這個數字都會增加,並且當沒有計算發生時,它會保持不變。因此,查看隨時間變化的 StatsNumStatementsScanned
值圖,可以很清楚地了解統計資料計算何時發生以及有多快:
進行計算時,圖形的斜坡會向您顯示有多快 (斜坡越陡,統計資料的計算速度越快)。
如果圖形只是一條位於 0 的平直線,表示已啟用統計資料功能,但根本沒有計算任何統計資料。如果已停用統計資料功能,或者如果您使用的引擎版本不支援統計資料計算,則 StatsNumStatementsScanned
不存在。
如前所述,您可以使用統計資料 API 停用統計資料計算,但將其關閉可能會導致統計資料無法更新,進而導致 DFE 引擎產生查詢計畫不佳。
如需如何使用 CloudWatch 的資訊使用 Amazon CloudWatch 監控 Neptune,請參閱 。
使用 AWS Identity and Access Management (IAM) 身分驗證與 DFE 統計資料端點
您可以使用 awscurl
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db
例如,您可以建立名為 的 JSON 檔案request.json
,其中包含:
{ "mode" : "refresh" }
您可以接著手動啟動統計資料產生,如下所示:
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db \ -X POST -d @request.json
刪除 DFE 統計資料
您可以向統計資料端點提出 HTTP DELETE請求,以刪除資料庫中的所有統計資料:
curl -X "DELETE" "$STATISTICS_ENDPOINT"
有效的單HTTP傳回碼為:
-
200
– 刪除成功。在此情況下,典型的回應如下所示:
{ "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
-
204
– 沒有任何要刪除的統計資料。在此情況下,回應是空白的 (沒有回應)。
如果將刪除請求傳送至讀取器節點上的統計資料端點,則會擲回 ReadOnlyViolationException
。
DFE 統計資料請求的常見錯誤代碼
以下是當您對統計資料端點提出請求時可能發生的常見錯誤清單:
AccessDeniedException
– 傳回碼:400
。訊息:Missing Authentication Token
。BadRequestException
(適用於 Gremlin 和 openCypher) – 傳回代碼:400
。訊息:Bad route: /pg/statistics
。BadRequestException
(適用於 RDF 資料) – 傳回代碼:400
。訊息:Bad route: /rdf/statistics
。InvalidParameterException
– 傳回碼:400
。訊息:Statistics command parameter 'mode' has unsupported value '
。the invalid value
'MissingParameterException
– 傳回碼:400
。訊息:Content-type header not specified.
。ReadOnlyViolationException
– 傳回碼:400
。訊息:Writes are not permitted on a read replica instance
。
例如,如果您在未啟用 DFE 和統計資料時提出請求,您會得到如下所示的回應:
{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }