View a markdown version of this page

Indeks pemecahan masalah - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Indeks pemecahan masalah

Topik berikut ini membahas apa yang harus dilakukan jika indeks atau pembuatan indeks latar belakang gagal.

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 dan upgrade Amazon DocumentDB dalam dokumentasi Amazon DocumentDB dan blog: Bermigrasi dari MongoDB ke Amazon DocumentDB menggunakan metode offline.

Saat membuat indeks pada cluster yang ada, jika pembuatan indeks membutuhkan waktu lebih lama dari yang diharapkan atau gagal, tingkatkan skala instans untuk membuat indeks, lalu kurangi kembali setelah indeks dibuat. Amazon DocumentDB memungkinkan Anda menskalakan ukuran instans dengan cepat dalam hitungan menit menggunakan Konsol Manajemen AWS atau. 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. Untuk membuat indeks pada koleksi kosong dan menghindari pemblokiran kueri yang berjalan lama, gunakan build 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 database kembung

Amazon DocumentDB menggunakan Kontrol Multi-Version Konkurensi (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 mengambil kembali ruang dari versi mati ini untuk operasi di masa mendatang.

Indeks kembung terjadi ketika indeks koleksi menjadi lebih besar karena akumulasi entri indeks yang mati atau usang atau fragmentasi di dalam halaman. Persentase yang dilaporkan mewakili jumlah ruang indeks yang dapat digunakan oleh entri indeks di masa mendatang. Kembung 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.