Neptune DFE が使用する統計情報の管理 - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Neptune DFE が使用する統計情報の管理

注記

OpenCypher Support は、Neptune 内の DFE クエリエンジンによって異なります。

DFEエンジンは、最初にラボモードで利用可能になりましたNeptune エンジンリリース 1.0.3.0、そして始めてNeptune エンジンリリース 1.0.5.0デフォルトで有効になりましたが、クエリヒントとOpenCypherサポートでのみ使用できます。

から始まるNeptune エンジンリリース 1.1.1.0DFE エンジンはラボモードではなくなり、neptune_dfe_query_engineインスタンスの DB パラメータグループのインスタンスパラメータ。

DFE エンジンは、Neptune グラフのデータに関する情報を使用して、クエリの実行を計画する際に効果的なトレードオフを行います。この情報は、クエリ計画を導くことができる、いわゆる特性セットと述語統計を含む統計の形式をとります。

現在、これらの DFE 統計は、グラフ内のデータの 10% 以上が変更された場合、または最新の統計が 10 日以上経過した場合に、再生成されます。ただし、これらのトリガーはfuture 変更される可能性があります。

DFE 統計情報の生成は、次のエンドポイントのいずれかを使用して管理できます。

  • https://your-neptune-host:port/sparql/statistics    (SPARQL の場合)

  • https://your-neptune-host:port/propertygraph/statistics(グレムリンとOpenCypher用)とその代替バージョン:https://your-neptune-host:port/pg/statistics

注記

現在エンジンリリース 1.1.1.0、Gremlin 統計エンドポイント (https://your-neptune-host:port/gremlin/statistics) は非推奨です。下位互換性のために引き続きサポートされていますが、将来のリリースで削除される可能性があります。

以下の例では、$STATISTICS_ENDPOINTは、これらのエンドポイント URL のいずれかを表します。

注記

DFE 統計エンドポイントがリーダーインスタンス上にある場合、処理できるリクエストはステータスリクエストです。その他のリクエストは、ReadOnlyViolationException で失敗します。

注記

統計生成はオンで無効になっていますT3そしてT4gインスタンスは、これらのインスタンスタイプのメモリ容量を超える可能性があるためです。

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 時刻。

    • note— 統計情報が無効な場合の問題に関するメモ。

    • 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 metric は、サーバーの起動後に統計計算用にスキャンされたステートメントの総数を返します。これは、各統計計算スライスで更新されます。

統計計算がトリガーされるたびに、この数は増加し、計算が行われていないときは一定のままです。時間の経過に伴いStatsNumStatementsScannedのプロットを見ると、統計計算がいつ行われたか、どのくらいの速さであったかがはっきりわかります。

のグラフ StatsNumStatementsScanned メトリクス値

計算が行われているとき、グラフの傾きはどのくらい速いかを示します(傾斜が急であるほど、より速い統計計算となります)。

グラフが単に 0 のフラットラインである場合、統計機能は有効になっていますが、統計情報はまったく計算されていません。統計機能が無効になっている場合、または統計計算をサポートしていないエンジンバージョンを使用している場合は、StatsNumStatementsScanned は存在しません。

前述のように、統計情報 API を使用して統計情報の計算を無効にすることはできますが、オフにすると、統計が最新にならず、DFE エンジンのクエリプランの生成が不十分になる可能性があります。

「」を参照してください。Amazon を使用した Neptune のモニタリング CloudWatchの使用方法については CloudWatch。

DFE 統計エンドポイントで AWS Identity and Access Management (IAM) 認証を使用する

DFE 統計エンドポイントには、awscurlまたは、HTTP および IAM で動作するその他のツールを使用して IAM 認証で安全にアクセスできます。アクセスキーとシークレットキーを渡した後、IAM 認証を使用する DFE 統計リクエストを作成できます。

たとえば、ステータスリクエストは次のようになります。

awscurl --service neptune-db "$STATISTICS_ENDPOINT"

または、たとえば、以下を含む request.json という名前の JSON ファイルを作成できます。

{ "mode" : "refresh" }

その後、次のように統計情報の生成を手動で開始できます。

awscurl --service neptune-db "$STATISTICS_ENDPOINT" -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(グレムリン用) —リターンコード: 400メッセージ: Bad route: /pg/statistics

  • BadRequestException(SPARQL 用) —リターンコード: 400メッセージ: Bad route: /sparql/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" }