翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Neptune スロークエリロギングの使用
実行速度が遅いクエリの特定、デバッグ、最適化は難しい場合があります。Neptune のスロークエリロギングを有効にすると、このプロセスを簡単にするために、長時間実行されるすべてのクエリの属性が自動的にログに記録されます。
注記
スロークエリロギングは Neptune エンジンリリース 1.2.1.0 で導入されました。
スロークエリロギングを有効にするには neptune_enable_slow_query_log DB クラスターパラメータを使用します。デフォルトでは、このパラメータは disabled
に設定されます。これを info
または debug
に設定すると、スロークエリロギングが有効になります。info
設定は、実行速度が遅い各クエリの少数の有用な属性を記録するのに対して、debug
設定は、使用可能なすべての属性を記録します。
実行速度が遅いと見なされるクエリのしきい値を設定するには、neptune_slow_query_log_threshold DB クラスターパラメータを使用して、実行中のクエリが遅いと見なされ、低速クエリのロギングが有効になっている場合にログに記録されるまでの時間をミリ秒単位で指定します。デフォルト値は 5,000 ミリ秒 (5 秒) です。
これらの DB クラスターパラメータは、、 AWS Management Console、または modify-db-cluster-parameter-group AWS CLI コマンド、または ModifyDBClusterParameterGroup 管理関数を使用して設定できます。
注記
スロークエリのロギングパラメータは動的です。つまり、値を変更しても DB クラスターを再起動する必要はなく、再起動の原因にもなりません。
でスロークエリログを表示するには AWS Management Console
スロークエリログは AWS Management Console、次のように で表示およびダウンロードできます。
[インスタンス] ページで、DB インスタンスを選択し、[ログ] セクションまでスクロールします。その後、そこでログファイルを選択し、[ダウンロード] を選択してダウンロードできます。
Neptune スロークエリロギングによって生成されたファイル
Neptune のスロークエリロギングによって生成されるログファイルには、次のような特徴があります。
ファイルは UTF-8 としてエンコードされます。
クエリとその属性は JSON 形式で記録されます。
NULL や空の属性は、
queryTime
データを除いてログに記録されません。ログは複数のファイルにまたがり、ファイル数はインスタンスのサイズによって異なります。
ログのエントリは、順番になっていません。並べ替えには、
timestamp
値を使用できます。最新のイベントを表示するには、すべてのログファイルの確認が必要な場合があります。
ログファイルは、合計 100 MB に達するとローテーションされます。この制限は設定できません。
info
モードで記録されるクエリ属性
neptune_enable_slow_query_log
DB クラスターパラメータがに設定されている場合、スロークエリでは以下の属性が記録されますinfo
。
グループ | 属性 | 説明 |
---|---|---|
requestResponseMetadata |
|
クエリのリクエスト ID。 |
|
リクエストタイプ、 HTTPまたは など WebSocket。 |
|
|
200 などのクエリ応答ステータスコード。 |
|
|
クエリ実行後に返されるエラーの例外クラス。 |
|
queryStats |
|
クエリ文字列 |
|
クエリのフィンガープリント。 |
|
|
Gremlin SPARQLや などのクエリ言語openCypher。 |
|
memoryStats |
|
クエリに割り当てられて許可されます。 |
|
実行中にクエリが使用したおおよそのメモリ。 |
|
queryTime |
|
クエリの開始時刻 (UTC)。 |
|
クエリの合計実行時間 (ミリ秒単位)。 |
|
|
クエリの解析時間 (ミリ秒単位)。 |
|
|
Gremlin/SPARQL/openCypher キュー待機時間をミリ秒単位でクエリする |
|
|
クエリの実行時間 (ミリ秒単位)。 |
|
|
クエリのシリアル化時間 (ミリ秒)。 |
|
statementCounters |
|
スキャンされたステートメントの数。 |
|
書き込まれたステートメントの数。 |
|
|
削除された要素の数。 |
|
transactionCounters |
|
コミットされたトランザクションの数。 |
|
ロールバックされるトランザクションの数。 |
|
vertexCounters |
|
追加された頂点の数。 |
|
削除された頂点の数。 |
|
|
追加された頂点プロパティの数。 |
|
|
削除された頂点プロパティの数。 |
|
edgeCounters |
|
追加されたエッジの数。 |
|
削除されたエッジの数。 |
|
|
追加されたエッジプロパティの数。 |
|
|
削除されたエッジプロパティの数。 |
|
resultCache |
|
結果キャッシュのヒット数。 |
|
結果キャッシュのミスカウント。 |
|
|
結果キャッシュのプット数。 |
|
concurrentExecution |
|
並列クエリは、開始時に現在のクエリ実行で受け付けられました。 |
|
開始時に現在のクエリ実行時に実行される並列クエリ。 |
|
|
現在のクエリ実行が終了した状態で並列クエリが受け入れられます。 |
|
|
現在のクエリ実行を終了して実行中の並列クエリ。 |
|
queryBatch |
|
クエリ処理中のBatch サイズ。 |
|
クエリのシリアル化中のBatch サイズ。 |
debug
モードで記録されるクエリ属性
neptune_enable_slow_query_log
DB クラスターパラメータをに設定するとdebug
、in mode として記録される属性に加えて、以下のストレージカウンター属性が記録されます。info
属性 | 説明 |
---|---|
|
すべてのインデックスでステートメントがスキャンされました。 |
|
SPOG インデックスでスキャンされたステートメント。 |
|
POGS インデックスでスキャンされたステートメント。 |
|
GPSO インデックスでスキャンされたステートメント。 |
|
OSGP インデックスでスキャンされたステートメント。 |
|
ステートメントはチャンクにまとめてスキャンされました。 |
|
スキャン後のポストフィルタリング後に残ったステートメント。 |
|
個別のステートメントがスキャンされました。 |
|
スキャン後に読み込まれたステートメントは、すべてのインデックスでフィルタリングされます。 |
|
SPOG インデックスでのスキャンポストフィルタリング後に読み取られるステートメント。 |
|
POGS インデックスでのスキャンポストフィルタリング後に読み取られるステートメント。 |
|
GPSO インデックスでのスキャンポストフィルタリング後に読み取られるステートメント。 |
|
OSGP インデックスでのスキャンポストフィルタリング後に読み取られるステートメント。 |
|
アクセスパス検索の数。 |
|
完全に制限されたキーアクセスパス検索の数。 |
|
プレフィックスで検索されたアクセスパスの数。 |
|
1 つ以上のレコードが出力された検索の数。 |
|
レコードが出力されなかった検索の数。 |
|
すべての検索で見つかったレコードの合計数。 |
|
すべてのインデックスに挿入されたステートメントの数。 |
|
すべてのインデックスで更新されたステートメントの数。 |
|
すべてのインデックスで削除されたステートメントの数。 |
|
述語の数。 |
|
値から ID テーブルにディクショナリを読み込む回数。 |
|
バリューテーブルの ID からのディクショナリ読み取り数。 |
|
ID テーブルの値に書き込まれたディクショナリの数です。 |
|
ID からバリューテーブルに書き込まれたディクショナリの数です。 |
|
すべてのインデックスの範囲カウント数。 |
|
クエリ内のデッドロックの数。 |
|
単一カーディナニティ・インサートの実行回数。 |
|
1 回のカーディナリティ挿入中に削除されたステートメントの数。 |
スロークエリのデバッグログの例
次の Gremlin クエリは、スロークエリに設定されたしきい値よりも実行に時間がかかる場合があります。
gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()
その場合、スロークエリロギングがデバッグモードで有効になっていると、クエリの次の属性が次のような形式でログに記録されます。
{ "requestResponseMetadata": { "requestId": "5311e493-0e98-457e-9131-d250a2ce1e12", "requestType": "HTTP_GET", "responseStatusCode": 200 }, "queryStats": { "query": "gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()", "queryFingerprint": "g.V().has(string0,string1).repeat(__.out().simplePath()).until(__.has(string0,string2)).path().by(string0).limit(long0).fold()", "queryLanguage": "Gremlin" }, "memoryStats": { "allocatedPermits": 20, "approximateUsedMemoryBytes": 14838 }, "queryTimeStats": { "startTime": "23/02/2023 11:42:52.657", "overallRunTimeMs": 2249, "executionTimeMs": 2229, "serializationTimeMs": 13 }, "statementCounters": { "read": 69979 }, "transactionCounters": { "committed": 1 }, "concurrentExecutionStats": { "acceptedQueryCountAtStart": 1 }, "queryBatchStats": { "queryProcessingBatchSize": 1000, "querySerialisationBatchSize": 1000 }, "storageCounters": { "statementsScannedInAllIndexes": 69979, "statementsScannedSPOGIndex": 44936, "statementsScannedPOGSIndex": 4, "statementsScannedGPSOIndex": 25039, "statementsReadInAllIndexes": 68566, "statementsReadSPOGIndex": 43544, "statementsReadPOGSIndex": 2, "statementsReadGPSOIndex": 25020, "accessPathSearches": 27, "fullyBoundedAccessPathSearches": 27, "dictionaryReadsFromValueToIdTable": 10, "dictionaryReadsFromIdToValueTable": 17, "rangeCountsInAllIndexes": 4 } }