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

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

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

注記

のサポート openCypher は、Neptune のDFEクエリエンジンによって異なります。

DFE エンジンは Neptune エンジンリリース 1.0.3.0 のラボモードで最初に利用可能になり、Neptune エンジンリリース 1.0.5.0 以降、デフォルトで有効になりましたが、クエリヒントと openCypher サポートでのみ使用できるようになりました。

Neptune エンジンリリース 1.1.1.0 以降、DFEエンジンはラボモードではなくなり、neptune_dfe_query_engineインスタンスの DB パラメータグループのインスタンスパラメータを使用して制御されるようになりました。

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

エンジンリリース 1.2.1.0 以降、 GetGraphSummaryAPIまたは summaryエンドポイントを使用して、これらの統計からグラフに関する概要情報を取得できます。

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

注記

統計の生成は、T3 および T4g インスタンスでは無効です。それらのインスタンスタイプのメモリ容量を超える可能性があるためです。

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

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

  • https://your-neptune-host:port/propertygraph/statistics(Gremlin および の場合openCypher)、およびその代替バージョン: https://your-neptune-host:port/pg/statistics

注記

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

エンジンリリース 1.2.1.0 の時点で、SPARQL統計エンドポイント (https://your-neptune-host:port/sparql/statistics) はエンドポイントを優先して廃止されていますrdf。下位互換性のために引き続きサポートされていますが、将来のリリースで削除される可能性があります。

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

注記

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

DFE 統計生成のサイズ制限

現在、次のいずれかのサイズ制限に達すると、DFE統計の生成が停止します。

  • 生成する特性セットの数は 50,000 を超えることはできません。

  • 生成する述語統計の数は 100 万を超えることはできません。

これらの制限は変更される可能性があります。

DFE 統計の現在のステータス

DFE 統計の現在のステータスは、次のcurlリクエストを使用して確認できます。

curl -G "$STATISTICS_ENDPOINT"

ステータスリクエストに対する応答には、以下のフィールドが含まれています。

  • status– リクエストのHTTPリターンコード。リクエストが成功した場合、コードは 200 です。共通エラーリストについては、一般的なエラー を参照してください。

  • payload:

    • autoCompute— (ブール値) 統計情報の自動生成が有効になっているかどうかを示します。

    • active– (ブール値) DFE統計の生成が有効化されているかどうかを示します。

    • statisticsId — 現在の統計生成の実行の ID を報告します。 -1 の値は統計が生成されていないことを示します。

    • date– DFE統計が最後に生成されたUTC時刻。8601 ISO 形式で表されます。

      注記

      エンジンリリース 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のプロットを見ると、統計計算がいつ行われたか、どのくらいの速さであったかがはっきりわかります。

StatsNumStatementsScanned メトリクス値のグラフ

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

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

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

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

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

認証を使用してDFE統計エンドポイントに安全にアクセスするには、awscurl IAM を使用するか、 HTTPSおよび で動作するその他のツールを使用しますIAM。適切な認証情報を設定する方法については、「IAM 認証を有効にawscurlして DB クラスターに安全に接続するための一時的な認証情報での の使用」を参照してください。設定が完了したら、次のようなステータスリクエストを行うことができます。

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 統計の削除

統計エンドポイントにHTTPDELETEリクエストを行うことで、データベース内のすべての統計を削除できます。

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" }