View a markdown version of this page

インデックスの維持 - Amazon DocumentDB

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

インデックスの維持

インデックスの肥大化

Amazon DocumentDB は、複数バージョンの同時実行制御 (MVCC) を使用して同時トランザクションを管理します。ドキュメントを削除または更新しても、以前のバージョンはコレクションとインデックスに「デッド」バージョンとして残ります。ガベージコレクションプロセスは、将来のオペレーションのために、これらのデッドバージョンからスペースを自動的に再利用します。

インデックスの肥大化は、デッドインデックスエントリや古いインデックスエントリの蓄積、またはページ内のフラグメント化により、コレクションのインデックスが大きくなった場合に発生します。レポートされる割合は、将来のインデックスエントリで使用できるインデックススペースの量を表します。この肥大化は、バッファキャッシュとストレージの両方の領域を消費します。肥大化を削除する場合は、インデックスを再構築する必要があります。

例: 次のコマンドを実行して、インデックスの未使用のストレージを確認します。

db.coll.aggregate({$indexStats:{}});

結果は以下のようになります。

{ "name" : "_id_", "key" : { "_id" : 1 }, "host" : "devbox-test.localhost.a2z.com:27317", "size" : NumberLong(827392), "accesses" : { "ops" : NumberLong(40000), "docsRead" : NumberLong(46049), "since" : ISODate("2025-04-03T21:44:51.251Z") }, "cacheStats" : { "blksRead" : NumberLong(264), "blksHit" : NumberLong(140190), "hitRatio" : 99.8121 }, "unusedStorageSize" : { "unusedSizeBytes" : 409600, "unusedSizePercent" : 49.51 } }

reIndex コマンドを使用すると、ダウンタイムなしでインデックスを再構築できます。このコマンドでは、コレクション全体のスキャンが必要です。reIndex を使用したインデックスメンテナンスを参照してください。

reIndex を使用したインデックスメンテナンス

reIndex は、インデックスを再構築するために使用されるコマンドです。通常、インデックスが破損したり、または非効率的になった場合に使用されます。時間の経過とともに、インデックスには多くの更新、挿入、削除に伴い未使用のスペースが蓄積され、パフォーマンスが低下する恐れがあります。インデックスの再構築は、このような未使用のスペースを削除し、インデックスの効率を回復するのに役立ちます。

reIndex ガイドライン

  • reIndex は Amazon DocumentDB 5.0 以降でのみサポートされています

  • reIndex は常にバックグラウンドで実行されます。

  • Amazon DocumentDB は、バックグラウンドで 1 つのインデックスの再インデックスをサポートしているため、複数のワーカーに対応できます。古いインデックスは、reIndex プロセスの実行時にクエリで使用できます。

  • Amazon DocumentDB は currentOp によるインデックス作成の進行状況レポートをサポートしています。インデックス作成時に表示されるインデックスビルドステージと同様のインデックスビルドステージを表示できます。唯一の違いは、reIndex には一意かどうかにかかわらず、常に 8 つのステージがあることです。「ビルドインデックス: ソートキー 2」ステージはありません。

  • reIndex は、createIndexes、collMod、renameCollection の同じコレクションでインデックス関連のコマンドを除く任意のコマンドと同時に実行できます。 dropIndexes

  • reIndex は現在、テキスト、地理空間、ベクトル、部分インデックスではサポートされていません。

reIndex ビルド

次のコマンドを使用してインデックスを再構築します。

db.runCommand({ reIndex: "collection-name", index: "index-name"})

オプションで、再構築プロセスに割り当てるワーカーの数をコントロールすることもできます。

db.runCommand({ reIndex: "collection-name", index: "index-name", workers: number })

Java でのインデックスの管理に固有の情報については、「」を参照してくださいJava による Amazon DocumentDB でのインデックス管理