1

MMAPv1ドキュメントが言ったように

すべてのレコードはディスク上で連続して配置され、割り当てられたレコードよりもドキュメントが大きくなると、MongoDB は新しいレコードを割り当てる必要があります。新しい割り当てでは、MongoDB がドキュメントを移動し、ドキュメントを参照するすべてのインデックスを更新する必要があります。これは、インプレース更新よりも時間がかかり、ストレージの断片化につながります。バージョン 3.0.0 で変更されました。
デフォルトでは、MongoDB は 2 の累乗サイズの割り当てを使用するため、MongoDB 内のすべてのドキュメントは、ドキュメント自体と余分なスペースまたはパディングを含むレコードに格納されます。パディングにより、再割り当ての可能性を最小限に抑えながら、更新の結果としてドキュメントを大きくすることができます。

しかし、WiredTiger ドキュメントはこれについて何も述べていません。したがって、レコードサイズが変更されたときに問題がないか、パフォーマンスの問題があるがドキュメントには記載されていないかを知りたいだけです。

4

1 に答える 1

3

WiredTiger を使用すると、ドキュメントの移動、パディングなどを心配する必要はありません。新しい書き込みは、最初に未使用領域のファイルに書き込まれ、後でバックグラウンドで残りのデータに組み込まれます。WiredTiger は、更新中に、mmapv1 が多くの場合に行うように既存のデータを上書きするのではなく、実際にドキュメントの新しいバージョンを書き込みます。( MongodDB の無料オンライン コースのビデオを確認してください)

于 2016-07-23T18:05:49.037 に答える