Sesuai dengan dokumentasi MongoDB, umumnya tidak perlu secara rutin membangun kembali indeks.
CATATAN :Setiap saran tentang penyimpanan menjadi lebih menarik dengan MongoDB 3.0+, yang memperkenalkan API mesin penyimpanan yang dapat dicolokkan . Komentar saya di bawah ini secara khusus mengacu pada mesin penyimpanan MMAP default di MongoDB 3.0 dan sebelumnya. WiredTiger dan mesin penyimpanan lainnya memiliki implementasi penyimpanan yang berbeda untuk data &indeks.
Mungkin ada beberapa manfaat dalam membangun kembali indeks dengan mesin penyimpanan MMAP jika:
-
Sebuah indeks mengkonsumsi jumlah ruang yang lebih besar dari yang diharapkan dibandingkan dengan data. Catatan:Anda perlu memantau data historis &ukuran indeks untuk memiliki dasar perbandingan.
-
Anda ingin bermigrasi dari format indeks yang lebih lama ke yang lebih baru. Jika pengindeksan ulang dapat dilakukan, ini akan disebutkan dalam catatan pemutakhiran. Misalnya, MongoDB 2.0 memperkenalkan peningkatan kinerja indeks jadi catatan rilis menyertakan indeks ulang yang disarankan ke format v2.0 setelah memutakhirkan. Demikian pula, MongoDB 2.6 memperkenalkan
2dsphere
(v2.0) indeks yang memiliki perilaku default yang berbeda (jarang secara default). Indeks yang ada tidak dibangun kembali setelah peningkatan versi indeks; pilihan jika/kapan untuk memutakhirkan diserahkan kepada administrator basis data. -
Anda telah mengubah
_id
format untuk koleksi ke atau dari kunci yang meningkat secara monoton (mis. ObjectID) ke nilai acak. Ini agak esoteris, tetapi ada pengoptimalan indeks yang membagi ember b-tree 90/10 (bukan 50/50) jika Anda memasukkan_id
s yang selalu meningkat (ref:SERVER-983 ). Jika sifat_id
Anda s berubah secara signifikan, dimungkinkan untuk membangun b-tree yang lebih efisien dengan indeks ulang.
Untuk informasi lebih lanjut tentang perilaku B-tree umum, lihat:Wikipedia:B-tree
Memvisualisasikan penggunaan indeks
Jika Anda benar-benar penasaran untuk menggali lebih dalam indeks internal, ada beberapa perintah/alat eksperimental yang dapat Anda coba. Saya berharap ini terbatas pada MongoDB 2.4 &2.6 saja: