Amazon Neptune スロークエリロギングの使用 - Amazon Neptune

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

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グループの使用 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_logDB クラスターパラメータがに設定されている場合、スロークエリでは以下の属性が記録されますinfo

グループ 属性 説明

requestResponseMetadata

requestId

クエリのリクエスト ID。

requestType

HTTP や などのリクエストタイプ WebSocket。

responseStatusCode

200 などのクエリ応答ステータスコード。

exceptionClass

クエリ実行後に返されるエラーの例外クラス。

queryStats

query

クエリ文字列

queryFingerprint

クエリのフィンガープリント。

queryLanguage

Gremlin SPARQLや などのクエリ言語openCypher。

memoryStats

allocatedPermits

クエリに割り当てられて許可されます。

approximateUsedMemoryBytes

実行中にクエリが使用したおおよそのメモリ。

queryTime

startTime

クエリ開始時刻 (UTC)。

overallRunTimeMs

クエリの合計実行時間 (ミリ秒単位)。

parsingTimeMs

クエリの解析時間 (ミリ秒単位)。

waitingTimeMs

Gremlin/SPARQL/openCypher queue 待機時間をミリ秒単位でクエリする

executionTimeMs

クエリの実行時間 (ミリ秒単位)。

serializationTimeMs

クエリのシリアル化時間 (ミリ秒)。

statementCounters

scanned

スキャンされたステートメントの数。

written

書き込まれたステートメントの数。

deleted

削除された要素の数。

transactionCounters

committed

コミットされたトランザクションの数。

rolledBack

ロールバックされるトランザクションの数。

vertexCounters

added

追加された頂点の数。

removed

削除された頂点の数。

propertiesAdded

追加された頂点プロパティの数。

propertiesRemoved

削除された頂点プロパティの数。

edgeCounters

added

追加されたエッジの数。

removed

削除されたエッジの数。

propertiesAdded

追加されたエッジプロパティの数。

propertiesRemoved

削除されたエッジプロパティの数。

resultCache

hitCount

結果キャッシュのヒット数。

missCount

結果キャッシュのミスカウント。

putCount

結果キャッシュのプット数。

concurrentExecution

acceptedQueryCountAtStart

並列クエリは、開始時に現在のクエリ実行で受け付けられました。

runningQueryCountAtStart

開始時に現在のクエリ実行時に実行される並列クエリ。

acceptedQueryCountAtEnd

現在のクエリ実行が終了した状態で並列クエリが受け入れられます。

runningQueryCountAtEnd

現在のクエリ実行を終了して実行中の並列クエリ。

queryBatch

queryProcessingBatchSize

クエリ処理中のBatch サイズ。

querySerialisationBatchSize

クエリのシリアル化中のBatch サイズ。

debug モードで記録されるクエリ属性

neptune_enable_slow_query_logDB クラスターパラメータをに設定するとdebug、in mode として記録される属性に加えて、以下のストレージカウンター属性が記録されます。info

属性 説明

statementsScannedInAllIndexes

すべてのインデックスでステートメントがスキャンされました。

statementsScannedSPOGIndex

SPOG インデックスでスキャンされたステートメント。

statementsScannedPOGSIndex

POGS インデックスでスキャンされたステートメント。

statementsScannedGPSOIndex

GPSO インデックスでスキャンされたステートメント。

statementsScannedOSGPIndex

OSGP インデックスでスキャンされたステートメント。

statementsScannedInChunk

ステートメントはチャンクにまとめてスキャンされました。

postFilteredStatementScans

スキャン後のポストフィルタリング後に残ったステートメント。

distinctStatementScans

個別のステートメントがスキャンされました。

statementsReadInAllIndexes

スキャン後に読み込まれたステートメントは、すべてのインデックスでフィルタリングされます。

statementsReadSPOGIndex

SPOG インデックスのスキャンポストフィルタリング後に読み取られたステートメント。

statementsReadPOGSIndex

POGS インデックスのスキャンポストフィルタリング後に読み取られたステートメント。

statementsReadGPSOIndex

GPSO インデックスのスキャンポストフィルタリング後に読み取られたステートメント。

statementsReadOSGPIndex

OSGP インデックスのスキャンポストフィルタリング後に読み取られたステートメント。

accessPathSearches

アクセスパス検索の数。

fullyBoundedAccessPathSearches

完全に制限されたキーアクセスパス検索の数。

accessPathSearchedByPrefix

プレフィックスで検索されたアクセスパスの数。

searchesWhereRecordsWereFound

1 つ以上のレコードが出力された検索の数。

searchesWhereRecordsWereNotFound

レコードが出力されなかった検索の数。

totalRecordsFoundInSearches

すべての検索で見つかったレコードの合計数。

statementsInsertedInAllIndexes

すべてのインデックスに挿入されたステートメントの数。

statementsUpdatedInAllIndexes

すべてのインデックスで更新されたステートメントの数。

statementsDeletedInAllIndexes

すべてのインデックスで削除されたステートメントの数。

predicateCount

述語の数。

dictionaryReadsFromValueToIdTable

値から ID テーブルにディクショナリを読み込む回数。

dictionaryReadsFromIdToValueTable

バリューテーブルの ID からのディクショナリ読み取り数。

dictionaryWritesToValueToIdTable

ID テーブルの値に書き込まれたディクショナリの数です。

dictionaryWritesToIdToValueTable

ID からバリューテーブルに書き込まれたディクショナリの数です。

rangeCountsInAllIndexes

すべてのインデックスの範囲カウント数。

deadlockCount

クエリ内のデッドロックの数。

singleCardinalityInserts

単一カーディナニティ・インサートの実行回数。

singleCardinalityInsertDeletions

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