翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Neptune DFE が使用する統計情報の管理
注記
Neptune での openCypher のサポートは、DFE クエリエンジンによって異なります。
DFE エンジンは、まず、Neptune エンジンリリース 1.0.3.0 でラボモードで使用可能になり、Neptune エンジンリリース 1.0.5.0 から、デフォルトで有効になりましたが、クエリヒントと openCypher サポートでのみ使用されます。
Neptune エンジンリリース 1.1.1.0 以降、DFE エンジンはラボモードではなくなり、インスタンスの DB パラメータグループの neptune_dfe_query_engine インスタンスパラメータを使用して制御されるようになりました。
DFE エンジンは、Neptune グラフのデータに関する情報を使用して、クエリの実行を計画する際に効果的なトレードオフを行います。この情報は、クエリ計画を導くことができる、いわゆる特性セットと述語統計を含む統計の形式をとります。
エンジンリリース 1.2.1.0 以降、GetGraphSummary API または summary
エンドポイントを使用して、これらの統計からグラフに関する概要情報を取得できます。
これらの DFE 統計は、現在、グラフ内のデータの 10% 以上が変更された場合、または最新の統計が 10 日以上経過した場合に再生成されます。ただし、これらのトリガーは将来、変更される可能性があります。
注記
統計の生成は、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 の時点で、Gremlin 統計エンドポイント (https://
) は廃止され、your-neptune-host
:port
/gremlin/statisticspropertygraph
または pg
エンドポイントが優先されます。下位互換性のために引き続きサポートされていますが、将来のリリースで削除される可能性があります。
エンジンリリース 1.2.1.0 の時点で、SPARQL 統計エンドポイント (https://
) は廃止され、your-neptune-host
:port
/sparql/statisticsrdf
エンドポイントが優先されます。下位互換性のために引き続きサポートされていますが、将来のリリースで削除される可能性があります。
以下の例では、$STATISTICS_ENDPOINT
は、これらのエンドポイント URL のいずれかを表します。
注記
DFE 統計エンドポイントがリーダーインスタンス上にある場合、処理できるリクエストはステータスリクエストです。その他のリクエストは、ReadOnlyViolationException
で失敗します。
DFE 統計生成のサイズ制限
現在、DFE 統計情報の生成は、次のいずれかのサイズ制限に達すると停止します。
生成する特性セットの数は 50,000 を超えることはできません。
生成する述語統計の数は 100 万を超えることはできません。
これらの制限は変更される可能性があります。
DFE 統計情報の現在のステータス
以下の curl
リクエストを使用して DFE 統計の現在のステータスを確認できます。
curl -G "$STATISTICS_ENDPOINT"
ステータスリクエストに対する応答には、以下のフィールドが含まれています。
status
— リクエストの HTTP リターンコード。リクエストが成功した場合、コードは200
です。共通エラーリストについては、一般的なエラー を参照してください。-
payload
:autoCompute
— (ブール値) 統計情報の自動生成が有効になっているかどうかを示します。active
—(ブール値)DFE 統計情報の生成が有効になっているかどうかを示します。statisticsId
— 現在の統計生成の実行の ID を報告します。-1
の値は統計が生成されていないことを示します。-
date
— DFE 統計が最近生成された 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
に設定されていることを確認します。
統計の自動生成を無効にしても、進行中の統計計算は終了しません。
DB クラスターのライターインスタンスではなくリーダーインスタンスに対して自動生成を無効にするリクエストを行うと、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 を返します。一度に実行できる統計生成は 1 つのみです。
DFE 統計の生成中にフェイルオーバーが発生した場合、新しいライターノードは最後に処理されたチェックポイントを取得し、そこから統計の実行を再開します。
StatsNumStatementsScanned
CloudWatch メトリクス統計を使って計算を監視する
StatsNumStatementsScanned
CloudWatch メトリクスは、サーバーの起動後に統計計算用にスキャンされたステートメントの総数を返します。これは、各統計計算スライスで更新されます。
統計計算がトリガーされるたびに、この数は増加し、計算が行われていないときは一定のままです。時間の経過に伴いStatsNumStatementsScanned
のプロットを見ると、統計計算がいつ行われたか、どのくらいの速さであったかがはっきりわかります。

計算が行われているとき、グラフの傾きはどのくらい速いかを示します(傾斜が急であるほど、より速い統計計算となります)。
グラフが単に 0 のフラットラインである場合、統計機能は有効になっていますが、統計情報はまったく計算されていません。統計機能が無効になっている場合、または統計計算をサポートしていないエンジンバージョンを使用している場合は、StatsNumStatementsScanned
は存在しません。
前述のように、統計情報 API を使用して統計情報の計算を無効にすることはできますが、オフにすると、統計が最新にならず、DFE エンジンのクエリプランの生成が不十分になる可能性があります。
CloudWatch のメトリクスを使用する方法については、Amazon CloudWatch を使用した Neptune のモニタリング を参照してください。
DFE 統計エンドポイントでの AWS Identity and Access Management (IAM) 認証の使用
awscurl
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db
または、たとえば、以下を含む request.json
という名前の 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" }