Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemecahan masalah indeks
Topik berikut ini membahas apa yang harus dilakukan jika indeks atau pembuatan indeks latar belakang gagal.
Topik
Pembuatan indeks gagal
Amazon DocumentDB menggunakan penyimpanan lokal pada instans sebagai bagian dari proses pembuatan indeks. Anda dapat memantau penggunaan disk ini menggunakan FreeLocalStorage CloudWatch metrik (CloudWatch -> Metrics -> DocDB -> Instance Metrics
). Ketika pembuatan indeks mengonsumsi semua disk lokal dan gagal, Anda akan menerima kesalahan. Ketika memigrasi data ke Amazon DocumentDB, kami mendorong Anda untuk membuat indeks terlebih dahulu dan kemudian memasukkan data. Untuk informasi selengkapnya tentang strategi migrasi dan membuat indeks, lihat Migrasi ke Amazon DocumentDB dalam dokumentasi Amazon DocumentDB dan blog: Bermigrasi dari MongoDB ke Amazon DocumentDB menggunakan metode offline
Ketika membuat indeks pada klaster yang ada, jika pembuatan indeks membutuhkan waktu lebih lama dari yang diharapkan atau gagal, kami sarankan Anda menskalakan ke atas instans untuk membuat indeks kemudian, setelah indeks dibuat, menskalakan kembali ke bawah. Amazon DocumentDB memungkinkan Anda menskalakan ukuran instans dengan cepat dalam hitungan menit menggunakan AWS Management Console atau file. AWS CLI Untuk informasi selengkapnya, lihat Mengelola kelas instance. Dengan harga instans per detik, Anda hanya membayar untuk sumber daya yang Anda gunakan hingga hitungan detik.
Indeks latar belakang membangun masalah latensi dan gagal
Indeks latar belakang yang dibangun di Amazon DocumentDB tidak mulai hingga semua kueri pada instans primer yang dimulai sebelum pembuatan indeks dijalankan secara lengkap saat dimulai. Jika terdapat kueri yang berjalan lama, pembuatan indeks latar belakang akan memblokir hingga kueri selesai dan dengan demikian dapat membutuhkan waktu lebih lama dari yang diharapkan untuk menyelesaikan. Hal ini berlaku bahkan jika koleksi kosong.
Pembuatan indeks latar depan tidak menunjukkan perilaku pemblokiran yang sama. Sebaliknya, pembuatan indeks latar depan mengambil kunci eksklusif pada koleksi hingga pembuatan indeks selesai. Dengan demikian, untuk membuat indeks pada koleksi kosong dan untuk menghindari pemblokiran pada setiap kueri yang berjalan lama, kami sarankan menggunakan pembuatan indeks latar depan.
catatan
Amazon DocumentDB hanya mengizinkan satu pembuatan indeks latar belakang terjadi pada koleksi pada waktu tertentu. Jika operasi DDL (Data Definition Language) seperti createIndex()
atau dropIndex()
terjadi pada koleksi yang sama selama pembuatan indeks latar belakang, pembuatan indeks latar belakang akan gagal.
Indeks basis data kembung
Amazon DocumentDB menggunakan Multi-Version Concurrency Concurrency Control (MVCC) untuk mengelola transaksi bersamaan. Ketika dokumen dihapus atau diperbarui, versi sebelumnya tetap dalam koleksi dan indeks sebagai versi “mati”. Proses pengumpulan sampah secara otomatis merebut kembali ruang dari versi mati ini untuk operasi masa depan.
Indeks kembung terjadi ketika indeks koleksi menjadi lebih besar karena akumulasi entri indeks mati atau usang atau fragmentasi dalam halaman. Persentase yang dilaporkan mewakili jumlah ruang indeks yang dapat digunakan oleh entri indeks future. Bloat ini menghabiskan ruang di cache buffer dan penyimpanan. Jika Anda ingin menghapus kembung, Anda perlu membangun kembali indeks.
contoh Contoh
Jalankan perintah berikut untuk menentukan penyimpanan yang tidak digunakan untuk indeks Anda:
db.coll.aggregate({$indexStats:{}});
Hasilnya terlihat mirip dengan ini:
{ "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
} }
Anda dapat membangun kembali indeks tanpa downtime menggunakan reIndex
perintah, yang memerlukan pemindaian seluruh koleksi. Lihat Pemeliharaan indeks menggunakan reIndex.