Neptune ディクショナリガベージコレクション - Amazon Neptune

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

Neptune ディクショナリガベージコレクション

Neptune は、プロパティグラフデータの neptune_lab_mode パラメータを介して有効にできるディクショナリガベージコレクション (GC) をサポートしています。neptune_streams が有効になっていない場合は、プロパティグラフデータのみが配置されているクラスターで有効にできます。neptune_streams が有効になっているか、有効期限が切れていない neptune_streams データがある場合、この機能は自動的に無効になります。この機能を有効にするには、ライターインスタンスを再起動する必要があります。この機能は、エンジンリリース 1.4.3.0 以降で利用できます。

有効にすると、未使用のディクショナリエントリはバックグラウンドジョブによってクリーンアップされます。VolumeBytesUsed を削減するのではなく、新しい挿入のためにインデックスのスペースを解放します。ディクショナリ GC が有効な場合、VolumeBytesUsed の増加率は、有効でない場合よりも低くなる可能性があります。

ディクショナリガベージコレクションはバックグラウンドで実行され、すべてのグラフとディクショナリデータをスキャンして、使用されていない用語を見つけます。データの約 6% が変更されると、起動時に新しい実行がトリガーされます。これは、CPU、バッファキャッシュ、UNDO ログ生成、書き込み I/O オペレーションなどのヘッドノードリソースのクエリスレッドと競合し、クエリスループットに悪影響を及ぼす可能性があります。GC はクエリによってアクティブに操作されないデータをスキャンするため、ライターノードのバッファキャッシュに影響を与える可能性があります。GC が新しい削除を実行すると、クラスターは追加の書き込み I/O オペレーションを表示し、GC が消去を実行するとパージする必要がある UNDO ログの生成量が増加し、これによって UndoLogListSize メトリクスの値が高くなる可能性もあります。

GC は、soft_deleteenabled の 2 つのモードで実行できます。soft_delete モードで実行された場合、未使用のディクショナリエントリは削除済み (soft_delete) としてマークされますが、明示的には削除されません。このモードは、バックグラウンドオペレーションがオンになった後のパフォーマンス特性を理解するためにも使用できます。有効モードを使用すると、エントリは明示的に削除されます (「ハード」削除)。enabled モードに切り替える前に、一定期間 GC を soft_delete モードで実行することをお勧めします。

ディクショナリ GC は、最大同時実行数 16 をサポートします (16 個以上のコアを搭載するマシンの場合)。デフォルトでは 1 つのスレッドで実行されますが、初めて有効にすると、より高い同時実行数で実行できます。ディクショナリ GC スレッド (1 つまたは複数) は、クエリスレッドと同等の優先度で実行され、ライターのリソースと同等に競合します。

ディクショナリ GC は、DictionaryGCMode キーを設定することで neptune_lab_mode パラメータを介して有効にできます。disabled (デフォルト)、soft_delete、または enabled の 3 つの値を使用できます。例えば、次のコードサンプルでは、DictionaryGCModesoft_delete に設定します。

neptune_lab_mode = 'DictionaryGCMode=soft_delete'

同時実行パラメータ DictionaryGCConcurrency はオプションであり、1~16 の値を取ることができます。最小コア数の 16 よりも大きい値に設定すると、同時実行はその値に制限されます。

neptune_lab_mode = 'DictionaryGCMode=soft_delete,DictionaryGCConcurrency=2'

ディクショナリ GC ジョブは、サーバーが起動した後、使用可能なデータがあるとバックグラウンドで有効になります。エンジンステータスには、ディクショナリ GC の現在のステータスが表示されます。以下に示す出力例は、ディクショナリ GC が soft_delete モードであり、同時実行数が 2 の状態で実行されていることを示しています。バックグラウンドジョブが実行されている場合は、未使用のディクショナリエントリをアクティブにスキャンして削除するか、新しい削除セットが新しい GC ラウンドをトリガーするのを待っている可能性があります。

{"status":"healthy",...,"labMode":{"ObjectIndex":"disabled","DictionaryGC":"{Mode=enabled,Concurrency=2}"},...}

これらの条件のいずれかが満たされると、ディクショナリ GC は一時停止されます。

  • アクティブな一括ロード。

  • 解放可能なメモリは 15Gb 未満です。

  • UndoLogListSize が 1,000,000 を超えています。