All Products
Search
Document Center

ApsaraDB for MongoDB:Reclaim disk fragments untuk membebaskan ruang disk

Last Updated:Aug 07, 2026

Setelah data dihapus menggunakan perintah delete atau indeks TTL, ruang disk fisik tidak dilepaskan secara otomatis. Ruang kosong yang tidak terpakai menjadi disk fragments. Topik ini menjelaskan tiga metode reclamation: rencana reclaim otomatis, reclaim manual dari konsol, dan perintah compact.

Pilih metode reclamation

Di ApsaraDB for MongoDB, setelah data dihapus menggunakan perintah delete atau indeks TTL, ruang disk fisik tidak dilepaskan secara otomatis. Ruang yang ditempati oleh data yang dihapus ditandai sebagai bebas dan disimpan untuk penulisan di masa depan. Bagian yang tetap tidak digunakan kembali menjadi disk fragments. Ketika akumulasi fragment menyebabkan utilisasi disk tinggi, Anda perlu melakukan reclaim fragment untuk membebaskan ruang fisik.

Situasi apa yang sedang Anda alami?

Gunakan tabel berikut untuk mengidentifikasi situasi Anda dengan cepat dan menuju ke bagian yang relevan:

Gejala

Penyebab / Tempat memeriksa

Setelah menghapus data (delete/TTL), ruang disk tidak berkurang atau bahkan meningkat.

Ini adalah perilaku yang diharapkan (mark-and-delete, lihat Mengapa disk fragments terjadi?). Anda perlu melakukan reclaim fragment secara manual. Lihat perbandingan metode di bawah.

Reclamation atau compact telah dijalankan tetapi tidak menunjukkan efek (tingkat fragmentasi tidak berubah, mengembalikan ok tetapi ruang tidak berubah).

Kemungkinan besar karena "ketidaksesuaian node" atau "di bawah ambang batas." Lihat Reclamation dijalankan tetapi tidak ada efek yang terlihat.

Disk penuh, instans terkunci, dan operasi write maupun delete gagal.

Lihat Dapatkah saya menjalankan compact saat instans terkunci karena disk penuh? (Anda dapat menggunakan drop untuk pemulihan cepat).

Utilisasi konsol dan alert tidak sesuai (misalnya, konsol menunjukkan 60% tetapi alert dipicu pada 90%).

Alert dipicu berdasarkan node tunggal tertinggi; konsol menampilkan node berbeda secara default. Lihat Utilisasi konsol tidak sesuai dengan alert.

Sejumlah besar data telah dibersihkan, dan Anda ingin mengecilkan ukuran disk untuk mengurangi biaya.

Pengecilan tidak didukung. Lihat Dapatkah saya mengecilkan disk untuk menghemat uang?.

Anda ingin langsung ke prosedur reclamation.

Lihat perbandingan metode di bawah.

Tiga metode reclamation dibandingkan sebagai berikut:

Dimensi

Metode 1: Rencana reclaim otomatis

Metode 2: Reclaim manual dari konsol

Metode 3: Compact melalui command-line

Node target

Hanya node Hidden

Hanya node Hidden

Utama atau

Node sekunder

Persyaratan versi kernel

  • 8.0, 7.0, 6.0, 5.0: semua versi minor

  • 4.4 (5.0.7 atau lebih baru)

  • 4.2 (4.0.23 atau lebih baru)

  • 8.0, 7.0, 6.0, 5.0: semua versi minor

  • 4.4 (5.0.7 atau lebih baru)

  • 4.2 (4.0.23 atau lebih baru)

Tidak ada

Batas ruang yang dapat direclaim per putaran

100 GB

Tidak ada

Tidak ada

Dampak terhadap layanan

Tidak ada (dieksekusi selama jendela pemeliharaan)

Tidak ada (menargetkan node Hidden)

Ya. Untuk detailnya, lihat Dampak compact terhadap workload.

Kasus penggunaan

Cocok untuk jumlah koleksi besar dengan jumlah ruang yang dapat direclaim kecil.

Cocok untuk koleksi dengan jumlah ruang yang dapat direclaim besar.

Volume besar, kontrol presisi, atau reclaim melalui konsol tidak mencukupi

Catatan

Menjalankan drop pada seluruh koleksi atau database segera melepaskan ruang fisiknya. Namun, ini adalah operasi penghapusan data dan hanya boleh digunakan sebagai tindakan darurat ketika ruang disk terbatas atau instans terkunci. Ini bukan metode reclaim fragment rutin.

Metode 1: Menyiapkan rencana reclaim otomatis

ApsaraDB for MongoDB menyediakan rencana reclaim fragment yang didukung oleh DAS (Database Autonomy Service). DAS secara otomatis mendeteksi dan menjalankan compact pada node Hidden selama jendela pemeliharaan instans. Tidak diperlukan intervensi manual dan proses ini tidak memengaruhi workload Anda.

Kondisi dan aturan pemicu

Sistem secara otomatis mereclaim fragment hanya dari koleksi yang secara bersamaan memenuhi kondisi berikut:

  • Ukuran gabungan ruang indeks dan ruang data melebihi 1 GB.

  • Tingkat fragmentasi melebihi 20%.

Aturan tambahan:

  • Batas atas untuk satu putaran reclaim adalah 100 GB. Kelebihannya akan direclaim dalam putaran berikutnya.

  • Hanya node Hidden yang direclaim. Node Hidden tidak melayani traffic bisnis, sehingga reclaim tidak memengaruhi node Primary atau Secondary.

  • Ambang batas di atas sudah tertanam dalam sistem dan tidak dapat dikustomisasi.

Titik masuk konfigurasi

  1. Login ke Konsol MongoDB dan navigasi ke instans target.

  2. Di panel navigasi kiri, pilih CloudDBA > Storage Analysis.

  3. Di daftar Data Space, temukan kolom Fragmentation Rate dan klik tautan Recycle.

  4. Pada kotak dialog Fragment Recycling Plan yang muncul, klik Create Plan dan konfirmasi.

Catatan

Titik masuk ini terletak dalam tautan header kolom pada tabel analisis penyimpanan. Ini bukan item menu mandiri dan mungkin mudah terlewatkan. Setelah rencana dibuat, koleksi yang memenuhi kondisi ambang batas akan secara otomatis direclaim selama jendela pemeliharaan. Untuk instruksi terperinci, lihat Storage analysis.

Metode 2: Reclaim manual dari konsol

Gunakan metode ini ketika ruang yang dapat direclaim dari suatu koleksi melebihi 100 GB.

Ketika ruang yang dapat direclaim dari suatu koleksi melebihi 100 GB, reclaim mungkin memakan waktu lebih dari 1 jam. Rencanakan waktu reclaim Anda sesuai.

Prosedur

  1. Navigasi ke instans target. Di panel navigasi kiri, pilih CloudDBA > Storage Analysis.

  2. Di daftar Data Space, lihat tingkat fragmentasi dan ruang yang dapat direclaim untuk setiap koleksi.

    Penting

    Operasi reclaim di analisis penyimpanan konsol, serta tingkat fragmentasi dan ruang yang dapat direclaim yang ditampilkan di halaman, secara default menargetkan node Hidden.

  3. Untuk koleksi dengan tingkat fragmentasi tinggi yang ingin Anda reclaim, klik tombol Recycle yang sesuai untuk mengeksekusi.

Verifikasi keberhasilan reclaim

Setelah reclaim selesai, jalankan analisis penyimpanan lagi dan periksa apakah tingkat fragmentasi koleksi target telah menurun. Pastikan Anda melihat node yang sama tempat reclaim dilakukan (lihat FAQ dan troubleshooting).

Penting

Jika Anda menjalankan compact pada node primary atau secondary melalui command line, tingkat fragmentasi di analisis penyimpanan konsol tidak akan berubah. Ini tidak berarti reclaim gagal. Buka halaman Monitoring Information dan beralih ke node tempat Anda benar-benar menjalankan operasi untuk memverifikasi hasilnya.

Metode 3: Compact melalui command-line

Gunakan metode ini ketika satu koleksi melebihi 100 GB, reclaim melalui konsol tidak mencukupi, atau Anda memerlukan kontrol presisi.

Persyaratan izin

Menjalankan compact memerlukan akun memiliki izin dbAdmin atau hostManager (versi > 8.0). Jika tidak, kesalahan izin akan dilaporkan:

not authorized on <database> to execute command { compact: ... }

Dampak compact pada beban kerja

  • Pemblokiran read/write dan dampak performa

    • Sebelum MongoDB 4.4: Perintah compact mengunci database yang berisi koleksi tersebut, memblokir semua operasi read dan write pada database tersebut. Ketika fragmentasi parah, compact mungkin memerlukan waktu lama untuk diselesaikan, yang dapat menyebabkan lag replikasi pada node Hidden. Kami menyarankan menjalankannya selama jam sepi, meningkatkan ukuran oplog berdasarkan workload write Anda, atau Upgrade versi utama database meningkatkan ke MongoDB 4.4 atau lebih baru sebelum melakukan reclaim fragment.

    • MongoDB 4.4 dan lebih baru: Perintah compact tidak lagi memblokir operasi read dan write, tetapi mungkin memengaruhi performa selama eksekusi. Kami menyarankan menjalankannya selama jam sepi.

  • Pembangunan ulang node

    • MongoDB 3.4 (semua versi), MongoDB 4.0 (semua versi), MongoDB 4.2 versi minor awal (4.0.22 atau lebih lama), dan MongoDB 4.4 versi minor awal (5.0.6 atau lebih lama): Node yang menjalankan compact memasuki status RECOVERING. Jika status ini berlangsung terlalu lama, komponen pemeriksaan kesehatan mungkin menandai node sebagai tidak sehat dan memicu pembangunan ulang otomatis. Untuk informasi versi MongoDB, lihat Versi minor MongoDB.

    • Untuk instans yang menjalankan versi lebih baru: Node yang mengeksekusi compact tetap dalam status SECONDARY dan tidak memicu pembangunan ulang.

  • Terlepas dari versinya, selalu prioritaskan reclaim fragment dari node Hidden atau Secondary untuk menghindari dampak pada node primary. Sebelum reclaim disk fragments, kami menyarankan membuat backup database Anda.

Waktu eksekusi compact

Waktu eksekusi bergantung pada volume data, beban sistem, dan faktor lainnya, dan tidak dapat diperkirakan secara tepat. Koleksi yang lebih besar dengan fragmentasi lebih banyak memerlukan waktu lebih lama. Koleksi yang sangat besar (ratusan GB) mungkin memerlukan waktu jauh lebih lama. Kami menyarankan menggunakan dryRun: true untuk memperkirakan ruang yang dapat direclaim terlebih dahulu, dan menjalankan operasi selama jam sepi.

Data berikut hanya disediakan sebagai referensi:

Uji dunia nyata (MongoDB 4.4): Menjalankan compact pada koleksi sekitar 2,5 GB dengan fragmentasi 50% memakan waktu sekitar 5 detik dan membebaskan sekitar 1,9 GB ruang.

Skenario di mana compact tidak efektif

Skenario berikut mungkin menyebabkan perintah compact tidak berpengaruh:

  • Ukuran koleksi fisik kurang dari 1 MB.

  • Tingkat fragmentasi di bawah 20%.

  • Kurang dari 20% ruang bebas ada di 80% pertama file, atau kurang dari 10% ruang bebas ada di 90% pertama file.

Untuk informasi lebih lanjut, lihat block_compact.

Instans replica set

Penting

Menjalankan compact langsung pada node primary tidak disarankan. compact mengonsumsi sumber daya I/O dan CPU yang signifikan, yang dapat memengaruhi workload online jika dijalankan pada node primary. Kami menyarankan menjalankannya pada node Secondary, lalu melakukan rotasi node melalui failover untuk reclaim setiap node secara bergiliran.

Instans standalone (StandAlone) hanya memiliki satu node. Hubungkan ke node tersebut dan jalankan compact langsung.

Hubungkan ke node Secondary dan jalankan perintah berikut:

use <database>

// Sebelum reclaim: periksa penggunaan ruang database untuk perbandingan
db.stats()

// Dry run: perkirakan ruang yang dapat direclaim tanpa benar-benar reclaim
db.runCommand({ compact: "<koleksi>", dryRun: true })

// Reclaim aktual
db.runCommand({ compact: "<koleksi>" })

// Setelah reclaim: periksa lagi untuk membandingkan ruang
db.stats()

Parameter dryRun: true mengaktifkan mode dry run, yang hanya mengembalikan estimatedBytesFreed (perkiraan jumlah byte yang dapat dibebaskan) tanpa memodifikasi file apa pun. Setelah meninjau hasil dry run, hapus parameter ini dan jalankan reclaim aktual. Jalankan db.stats() sebelum dan sesudah reclaim untuk membandingkan penggunaan ruang database dan mengonfirmasi hasilnya.

Catatan

Pastikan operasi compact sebelumnya telah selesai sebelum memulai yang baru pada koleksi yang sama.

Tentang parameter force:true

Jika Anda terhubung langsung ke node primary aktif dan menjalankan compact, Anda akan menerima kesalahan protektif berikut:

will not run compact on an active replica set primary as this will slow down
other running operations. use force:true to force

Ini adalah mekanisme proteksi MongoDB: menjalankan compact pada node primary memperlambat operasi yang sedang berjalan, sehingga sistem memblokirnya secara default. Parameter force harus diatur ke true saat dijalankan pada node primary. Parameter force:true hanya melewati lapisan proteksi ini. Ini tidak menghilangkan dampak terhadap workload Anda.

  • Hindari menggunakan force:true kecuali benar-benar diperlukan.

  • Gunakan analisis penyimpanan konsol atau rencana reclaim otomatis untuk reclaim node Hidden, atau jalankan compact pada node Secondary (node ini tidak memerlukan force).

  • Jika Anda harus menjalankan compact pada node primary dengan force:true, lakukan selama jam sepi dan evaluasi dampaknya terlebih dahulu.

Instans kluster sharded

Untuk kluster sharded, Anda hanya perlu reclaim fragment dari node yang sesuai dalam komponen Shard. Komponen Mongos dan ConfigServer tidak menyimpan data pengguna dan tidak memerlukan reclaim.

Node read-only dalam kluster sharded tidak mendukung perintah compact, sehingga Anda tidak dapat reclaim fragment dari node read-only (ReadOnly).

Reclaim fragment node Secondary: Saat menjalankan runCommandOnShard, Anda harus mengatur preferensi baca ke Secondary. Sintaksnya bervariasi tergantung klien. Pilih metode yang sesuai untuk klien Anda:

mongosh 2.x

mongosh 2.x mendukung menentukan preferensi baca langsung di parameter kedua runCommand:

db.runCommand({runCommandOnShard:"<ID Shard>","command":{compact:"<nama_koleksi>"}},{readPreference: "secondary"})

mongosh 1.x

mongosh 1.x memerlukan pengaturan preferensi baca melalui setReadPref sebelum menjalankan perintah:

db.getMongo().setReadPref('secondary')
db.runCommand({runCommandOnShard:"<ID Shard>","command":{compact:"<nama_koleksi>"}})

mongo shell (legacy)

mongo shell (legacy) memerlukan penambahan $queryOptions untuk menentukan preferensi baca:

db.runCommand({runCommandOnShard:"<ID Shard>","command":{compact:"<nama_koleksi>"},$queryOptions: {$readPreference: {mode: 'secondary'}}})

Mengambil kembali fragmen node utama (tidak disarankan):

Penting

Untuk meminimalkan dampak layanan, kami menyarankan melakukan failover primary/secondary untuk mengalihkan node Primary ke node Secondary, lalu reclaim fragment dari node Secondary baru. Untuk instruksi failover primary/secondary, lihat Alih bencana primary/secondary untuk instans kluster sharded.

db.adminCommand({
  runCommandOnShard: "<shardId>",
  dbName: "<database>",
  command: { compact: "<koleksi>", force: true }
})

FAQ dan troubleshooting

Reclaim dijalankan tetapi tidak ada efek yang terlihat

Periksa hal berikut secara berurutan:

  1. Ketidaksesuaian node antara operasi dan verifikasi (penyebab paling umum): Analisis penyimpanan konsol mereclaim fragment dari node Hidden, dan halaman menampilkan tingkat fragmentasi untuk node Hidden secara default. Compact melalui command line memengaruhi node tempat Anda terhubung. Jika Anda menjalankan compact pada node primary atau secondary tetapi memeriksa tingkat fragmentasi di analisis penyimpanan konsol, angkanya tidak akan berubah. Pendekatan yang benar: Buka halaman Monitoring Information dan beralih ke node tempat Anda benar-benar melakukan operasi untuk melihat utilisasi ruang disk.

  2. Fragmentasi file internal: compact hanya dapat memotong ruang bebas kontigu di akhir file. Ruang yang dapat digunakan kembali di dalam file tidak dapat direclaim. Jika fragment tersebar di dalam file, ruang disk mungkin tetap hampir tidak berubah setelah compact. Ini adalah perilaku yang diharapkan dari mesin penyimpanan WiredTiger, bukan kegagalan. Jalankan db.<koleksi>.stats() dan periksa rasio freeStorageSize terhadap storageSize untuk memperkirakan ruang yang dapat direclaim.

  3. Di bawah ambang batas reclaim: Jika tingkat fragmentasi di bawah 20%, ukuran koleksi fisik kurang dari 1 MB, atau koleksinya kecil, ruang absolut yang dapat direclaim sangat kecil dan reclaim mungkin tidak menunjukkan efek yang terlihat.

  4. Proteksi node primary memblokir operasi: Jika Anda melihat use force:true to force, ini adalah mekanisme proteksi yang menunjukkan bahwa compact dijalankan pada node primary. Jangan gunakan force. Sebagai gantinya, jalankan compact pada node Hidden atau Secondary, atau gunakan analisis penyimpanan konsol untuk reclaim node Hidden.

Mengapa tingkat fragmentasi tidak turun ke 0%?

Ini adalah perilaku yang diharapkan. compact hanya mereclaim ruang bebas kontigu di akhir file. Ruang yang dapat digunakan kembali di dalam file dipertahankan untuk penulisan di masa depan. Oleh karena itu, tingkat fragmentasi biasanya tidak dapat turun ke 0%. Ini adalah pilihan desain dari mesin penyimpanan WiredTiger.

Kesalahan: Tidak Diotorisasi

Menjalankan compact memerlukan izin dbAdmin atau hostManager (versi > 8.0). Jika tidak, kesalahan izin akan dilaporkan. Lihat Persyaratan izin.

Kesalahan: Interrupted ... cache eviction pressure

Penyebab: Selama eksekusi compact, mesin penyimpanan WiredTiger mengalami tekanan eviksi cache. Versi lama dan instans spesifikasi kecil memiliki sumber daya memori terbatas. Ketika tekanan cache terlalu tinggi dan mesin tidak dapat mengevakuasi halaman tepat waktu, compact diinterupsi dan keluar lebih awal.

Resolusi: Coba lagi selama jam sepi, picu failover primary/secondary dan coba lagi, atau tingkatkan spesifikasi instans sebelum reclaim.

Dapatkah saya menjalankan compact saat instans terkunci karena disk penuh?

Ya. Ketika disk penuh, instans memasuki status terkunci. Operasi write (insert) dan delete (delete) ditolak dengan kesalahan cloud instance error, disk locked..., tetapi operasi find, compact, dan drop masih dapat dieksekusi.

Catatan

Mengapa operasi delete juga ditolak?

Operasi delete sendiri menulis ke oplog dan tetap mengonsumsi ruang disk, sehingga juga ditolak dalam status terkunci. Namun, drop dan compact adalah operasi tingkat metadata atau reorganisasi ruang dan diizinkan oleh sistem. Dalam status terkunci, Anda dapat menjalankan compact untuk reclaim fragment dan membebaskan ruang, atau menjalankan drop untuk menghapus koleksi dan membebaskan ruang. Keduanya adalah jalur pemulihan yang tidak memerlukan scaling up.

Keputusan pemulihan tercepat

Situasi Anda

Tindakan yang disarankan

Kecepatan pemulihan

Biaya

Anda memiliki koleksi atau database yang tidak digunakan yang dapat dihapus dengan aman.

Jalankan drop (drop diizinkan dalam status terkunci).

Setelah membebaskan ruang, instans secara otomatis membuka kunci dalam waktu sekitar 4 hingga 5 menit (ada penundaan deteksi; tidak instan).

Tidak ada biaya, tetapi data dihapus. Pastikan data tersebut dapat dihapus.

Data tidak dapat dihapus, tetapi ada fragment signifikan yang dapat direclaim.

Jalankan compact (compact diizinkan dalam status terkunci).

Setelah compact membebaskan ruang, instance akan secara otomatis terbuka kuncinya dalam waktu sekitar 5 menit (terdapat keterlambatan deteksi; proses ini tidak instan).

  • Tidak ada biaya, tidak ada penghapusan data.

  • Efektivitas reclaim bergantung pada tingkat fragmentasi dan distribusinya.

  • Mungkin memengaruhi performa layanan. Lihat Dampak compact terhadap workload.

Tidak ada data yang dapat dihapus / data tidak boleh hilang.

Tingkatkan ruang penyimpanan.

Akan terbuka setelah proses penskalaan selesai.

Catatan

Setelah membuka kunci, segera reclaim fragment atau bersihkan data yang tidak digunakan untuk mencegah disk penuh lagi. Lihat Atasi kunci instans yang disebabkan oleh ruang disk habis.

Utilisasi konsol tidak sesuai dengan alert (misalnya, konsol menunjukkan 60% tetapi alert dipicu pada 90%)

Ini disebabkan oleh dimensi tampilan yang berbeda, bukan kesalahan data:

  • Alert dipicu berdasarkan "node tunggal tertinggi": Dalam replica set, utilisasi disk node Primary, Secondary, dan Hidden mungkin berbeda (node Secondary/Hidden sering lebih tinggi daripada Primary karena oplog, waktu reclaim, file sementara, dan alasan lainnya). Alert dipicu ketika node tunggal melebihi ambang batas.

  • Konsol tidak menampilkan "node tertinggi" secara default: Halaman Basic Information instans menunjukkan nilai agregat, dan halaman Storage Analysis secara default menampilkan node Hidden. Keduanya mungkin lebih rendah daripada node yang memicu alert.

Cara melihat penggunaan aktual setiap node: Buka halaman Monitoring Information instans, ubah mode tampilan ke Sub-node independent, lalu Anda dapat melihat penggunaan ruang disk masing-masing node Primary dan Secondary secara individual untuk mengidentifikasi node dengan penggunaan tinggi yang memicu peringatan.

Untuk informasi lebih lanjut tentang mengapa utilisasi disk node primary dan secondary berbeda dan cara mengatasinya, lihat Utilisasi ruang disk tinggi pada instans ApsaraDB for MongoDB.

Dapatkah saya mengecilkan disk untuk menghemat uang?

Pengecilan tidak didukung. ApsaraDB for MongoDB tidak mendukung pengurangan ruang disk yang telah dibeli untuk versi apa pun. Bahkan jika Anda telah membersihkan sejumlah besar data dan mereclaim fragment, Anda hanya dapat mempertahankan atau meningkatkan spesifikasi disk. Anda tidak dapat langsung menguranginya.

Jika Anda memerlukan spesifikasi disk yang lebih kecil, satu-satunya pilihan adalah membuat instans baru dengan spesifikasi lebih kecil, migrasi data Anda menggunakan DTS, lalu lepaskan instans asli. Evaluasi biaya migrasi dan jendela downtime sebelum melanjutkan.

Untuk perubahan konfigurasi dan batasan spesifikasi, lihat Ubah konfigurasi instans replica set.

Apendiks

Mengapa disk fragments terjadi?

Ketika data dihapus menggunakan perintah delete atau kedaluwarsa TTL, data tersebut hanya ditandai sebagai dihapus. Ruang yang ditempatinya tidak segera dikembalikan ke sistem operasi. Sebaliknya, ruang tersebut dipertahankan sebagai blok bebas untuk penulisan di masa depan. Ketika penghapusan melebihi penulisan, blok bebas ini tetap tidak digunakan dalam periode panjang, membentuk fragment. Inilah mengapa utilisasi disk tetap tinggi meskipun volume data berkurang.

Kapan harus reclaim disk fragments

Pertimbangkan untuk mengambil kembali fragmen disk dalam situasi berikut:

  • Setelah menghapus volume data besar: Ketika Anda menghapus sejumlah besar dokumen, ruang yang dibebaskan tidak dikembalikan ke sistem operasi tetapi disimpan untuk penulisan di masa depan, meninggalkan ruang fragmentasi signifikan pada disk.

    Penting

    Penghapusan manual (delete) dan kedaluwarsa TTL tidak secara otomatis reclaim disk fragments. Reclaim manual diperlukan.

  • Setelah workload write tinggi berkepanjangan: Workload write tinggi berkelanjutan (sering melakukan insert, update, dan delete) secara bertahap mengakumulasi ruang fragmentasi pada disk.

  • Ketika ruang disk rendah dan fragmentasi melebihi 20%: Ketika utilisasi disk mencapai 85% hingga 90% atau lebih tinggi, reclaim fragment dapat membebaskan ruang dan mengurangi tekanan penyimpanan.

Lihat dan perkirakan ruang yang dapat direclaim

Hubungkan ke instans (untuk instans replica set, hubungkan ke node Secondary untuk meminimalkan dampak layanan) dan jalankan db.runCommand({collStats: "<koleksi>"}) untuk melihat status penyimpanan koleksi. Perhatikan bidang berikut:

  • size: Ukuran penyimpanan logis koleksi.

  • storageSize: Ukuran penyimpanan fisik koleksi.

  • freeStorageSize: Ruang bebas yang dapat direclaim dalam koleksi (tersedia di MongoDB 4.4 dan lebih baru).

Setelah menghapus dokumen dengan perintah remove, size berkurang, tetapi storageSize mungkin tidak berubah. Rasio freeStorageSize terhadap storageSize yang lebih tinggi menunjukkan tingkat fragmentasi lebih tinggi.

Anda juga dapat menjalankan perintah berikut untuk memperkirakan ruang fragment yang dapat direclaim dari koleksi (mengembalikan jumlah byte yang dapat digunakan kembali):

db.<koleksi>.stats().wiredTiger["block-manager"]["file bytes available for reuse"]
Catatan

Untuk instans yang hampir kosong, freeStorageSize mungkin mengembalikan null. Dalam kasus ini, periksa wiredTiger["block-manager"]["file bytes available for reuse"] (byte yang dapat digunakan kembali) dan ["file size in bytes"] (ukuran file total) untuk memperkirakan rasio fragmentasi. Untuk deskripsi bidang, lihat Output collStats.