Tüm Ürünler
Search
Belge Merkezi

ApsaraDB for MongoDB:Disk alanını boşaltmak için disk parçalarını geri kazanın

Son Güncelleme:Oct 03, 2026

delete komutu veya TTL dizinleri kullanılarak veriler silindiğinde fiziksel disk alanı otomatik olarak serbest kalmaz. Kullanılmayan boş alan disk parçalarına dönüşür. Bu konuda üç geri kazanım yöntemi açıklanmaktadır: otomatik geri alma planları, konsoldan manuel geri alma ve compact komutu.

Geri kazanım yöntemi seçin

ApsaraDB for MongoDB'de delete komutu veya TTL dizinleri kullanılarak veriler silindiğinde fiziksel disk alanı otomatik olarak serbest kalmaz. Silinen verilerin kapladığı alan boş olarak işaretlenir ve gelecekteki yazma işlemleri için ayrılır. Yeniden kullanılmayan kısım disk parçaları haline gelir. Parça birikimi yüksek disk kullanımına neden olduğunda fiziksel alanı boşaltmak için parçaları geri kazanmanız gerekir.

Hangi durumla karşılaşıyorsunuz?

Durumunuzu hızlıca belirlemek ve ilgili bölüme gitmek için aşağıdaki tabloyu kullanın:


Belirti


Neden / Nereye bakılmalı


Verileri sildikten sonra (delete/TTL) disk alanı azalmaz veya hatta artar.


Bu beklenen bir davranıştır (işaretle ve sil, bkz. Disk parçaları neden oluşur?). Parçaları manuel olarak geri almanız gerekir. Aşağıdaki yöntem karşılaştırmasına bakın.


Geri alma veya compact çalıştırıldı ancak etkisi olmadı (parçalanma oranı değişmedi, ok döndü ancak alan değişmedi).


Büyük olasılıkla "düğüm uyumsuzluğu" veya "eşiğin altında". Bkz. Geri alma çalıştırıldı ancak görünür etki yok.


Disk dolu, örnek kilitli ve hem yazma hem de silme işlemleri başarısız oluyor.


Bkz. Disk doluluğu nedeniyle örnek kilitlendiğinde compact çalıştırabilir miyim? (hızlı kurtarma için drop kullanabilirsiniz).


Konsol kullanımı ve uyarılar eşleşmiyor (örneğin, konsol %60 gösteriyor ancak uyarı %90'da tetikleniyor).


Uyarılar en yüksek tek düğümde tetiklenir; konsol varsayılan olarak farklı bir düğüm gösterir. Bkz. Konsol kullanımı uyarılarla eşleşmiyor.


Büyük miktarda veri temizlendi ve maliyetleri düşürmek için diski küçültmek istiyorsunuz.


Küçültme desteklenmez. Bkz. Para tasarrufu yapmak için diski küçültebilir miyim?.


Doğrudan geri alma prosedürlerine gitmek istiyorsunuz.


Aşağıdaki yöntem karşılaştırmasına bakın.

Üç geri kazanım yönteminin karşılaştırması aşağıdadır:

Boyut

Yöntem 1: Otomatik geri alma planı

Yöntem 2: Konsoldan manuel geri alma

Yöntem 3: Komut satırı compact

Hedef düğüm

Yalnızca Gizli düğümler

Yalnızca Gizli düğümler

Birincil veya

İkincil düğümler

Çekirdek sürümü gereksinimleri

  • 8.0, 7,0, 6,0, 5,0: tüm alt sürümler

  • 4.4 (5.0.7 veya üzeri)

  • 4.2 (4.0.23 veya üzeri)

  • 8.0, 7,0, 6,0, 5,0: tüm alt sürümler

  • 4.4 (5.0.7 veya üzeri)

  • 4.2 (4.0.23 veya üzeri)

Yok

Tur başına geri alınabilir alan sınırı

100 GB

Yok

Yok

Hizmet etkisi

Yok (bakım pencereleri sırasında çalıştırılır)

Yok (Gizli düğümleri hedefler)

Evet. Ayrıntılar için bkz. Compact'ın iş yüklerine etkisi.

Kullanım durumu

Geri alınabilir alanı az olan çok sayıda koleksiyon için uygundur.

Geri alınabilir alanı büyük olan koleksiyonlar için uygundur.

Büyük hacimler, hassas kontrol veya konsol geri almasının yetersiz olduğu durumlar

Not

Tüm bir koleksiyonda veya veritabanında drop çalıştırmak fiziksel alanını anında serbest bırakır. Ancak bu bir veri silme işlemidir ve yalnızca disk alanı kritik düzeydeyse veya örnek kilitlendiğinde acil durum önlemi olarak kullanılmalıdır. Rutin bir parça geri kazanım yöntemi değildir.

Yöntem 1: Otomatik geri alma planı ayarlayın

ApsaraDB for MongoDB, DAS (Database Autonomy Service) tarafından desteklenen bir parça geri alma planı sunar. DAS, örnek bakım penceresi sırasında Gizli düğümlerde otomatik olarak algılama yapar ve compact çalıştırır. Manuel müdahale gerekmez ve süreç iş yüklerinizi etkilemez.

Tetikleme koşulları ve kurallar

Sistem, aşağıdaki koşulları aynı anda karşılayan koleksiyonlardan parçaları otomatik olarak geri alır:

  • Dizin alanı ve veri alanının toplam boyutu 1 GB'yi aşar.

  • Parçalanma oranı %20'nin üzerindedir.

Ek kurallar:

  • Tek bir geri alma turu için üst sınır 100 GB'dir. Fazlası sonraki turlarda geri alınır.

  • Yalnızca Gizli düğümler geri alınır. Gizli düğümler iş trafiğine hizmet etmez; bu nedenle geri alma birincil veya ikincil düğümleri etkilemez.

  • Yukarıdaki eşikler sisteme dahildir ve özelleştirilemez.

Yapılandırma giriş noktası

  1. MongoDB konsolu üzerinde oturum açın ve hedef örneğe gidin.

  2. Sol gezinme bölmesinde CloudDBA > Storage Analysis seçeneğini belirleyin.

  3. Data Space listesinde Fragmentation Rate sütununu bulun ve Recycle bağlantısına tıklayın.

  4. Açılan Fragment Recycling Plan iletişim kutusunda Create Plan öğesine tıklayın ve onaylayın.

Not

Bu giriş noktası depolama analizi tablosundaki bir sütun başlığı bağlantısı içinde yer alır. Bağımsız bir menü öğesi değildir ve gözden kaçması kolay olabilir. Plan oluşturulduktan sonra eşik koşullarını karşılayan koleksiyonlar bakım pencereleri sırasında otomatik olarak geri alınır. Ayrıntılı talimatlar için bkz. Depolama analizi.

Yöntem 2: Konsoldan manuel geri alma

Bir koleksiyonun geri alınabilir alanı 100 GB'yi aştığında bu yöntemi kullanın.

Bir koleksiyonun geri alınabilir alanı 100 GB'yi aştığında geri alma işlemi 1 saatten fazla sürebilir. Geri alma zamanınızı buna göre planlayın.

Prosedür

  1. Hedef örneğe gidin. Sol gezinme bölmesinde CloudDBA > Storage Analysis seçeneğini belirleyin.

  2. Data Space listesinde her koleksiyon için parçalanma oranını ve geri alınabilir alanı görüntüleyin.

    Önemli

    Konsol depolama analizindeki geri alma işlemleri ve sayfada görüntülenen parçalanma oranı ile geri alınabilir alan varsayılan olarak Gizli düğümleri hedefler.

  3. Geri almak istediğiniz yüksek parçalanma oranına sahip koleksiyonlar için ilgili Recycle düğmesine tıklayarak çalıştırın.

Geri alma başarısını doğrulayın

Geri alma tamamlandıktan sonra depolama analizini tekrar çalıştırın ve hedef koleksiyonun parçalanma oranının azalıp azalmadığını kontrol edin. Geri almanın yapıldığı aynı düğümü görüntülediğinizden emin olun (bkz. SSS ve sorun giderme).

Önemli

Komut satırı aracılığıyla birincil veya ikincil düğümde compact çalıştırdıysanız konsol depolama analizindeki parçalanma oranı değişmez. Bu geri almanın başarısız olduğu anlamına gelmez. Monitoring Information sayfasına gidin ve sonucu doğrulamak için işlemi gerçekten çalıştırdığınız düğüme geçin.

Yöntem 3: Komut satırı compact

Tek bir koleksiyon 100 GB'yi aştığında, konsol geri alması yetersiz kaldığında veya hassas kontrole ihtiyaç duyduğunuzda bu yöntemi kullanın.

İzin gereksinimleri

Compact çalıştırmak için hesabın dbAdmin veya hostManager (sürüm > 8.0) izinlerine sahip olması gerekir. Aksi takdirde bir izin hatası bildirilir:

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

Compact'ın iş yüklerine etkisi

  • Okuma/yazma engelleme ve performans etkisi

    • MongoDB 4.4 öncesi: compact komutu koleksiyonu içeren veritabanını kilitler ve bu veritabanındaki tüm okuma ve yazma işlemlerini engeller. Parçalanma şiddetli olduğunda compact tamamlanması uzun sürebilir ve bu da Gizli düğümlerde çoğaltma gecikmesine neden olabilir. Yoğun olmayan saatlerde çalıştırmanızı, yazma iş yükünüze göre oplog boyutunu artırmanızı veya parçaları geri almadan önce MongoDB 4.4 veya sonraki bir sürüme Veritabanı ana sürümünü yükseltin yükseltmenizi öneririz.

    • MongoDB 4.4 ve sonrası: compact komutu artık okuma ve yazma işlemlerini engellemez ancak yürütme sırasında performansı etkileyebilir. Yoğun olmayan saatlerde çalıştırmanızı öneririz.

  • Düğüm yeniden oluşturma

    • MongoDB 3.4 (tüm sürümler), MongoDB 4.0 (tüm sürümler), MongoDB 4.2 erken alt sürümleri (4.0.22 veya öncesi) ve MongoDB 4.4 erken alt sürümleri (5.0.6 veya öncesi): compact çalıştıran düğüm RECOVERING durumuna girer. Bu durum çok uzun sürerse sağlık denetimi bileşeni düğümü sağlıksız olarak işaretleyebilir ve otomatik yeniden oluşturmaya neden olabilir. MongoDB sürüm bilgileri için bkz. MongoDB alt sürümleri.

    • Daha sonraki sürümleri çalıştıran örnekler için: compact yürüten düğüm SECONDARY durumunda kalır ve yeniden oluşturma tetiklemez.

  • Sürümden bağımsız olarak birincil düğümü etkilememek için her zaman parçaları öncelikle Gizli veya İkincil düğümlerden geri almayı tercih edin. Disk parçalarını geri almadan önce veritabanınızı yedeklemenizi öneririz.

compact yürütme süresi

Yürütme süresi veri hacmine, sistem yüküne ve diğer faktörlere bağlıdır ve kesin olarak tahmin edilemez. Daha fazla parçalanmaya sahip daha büyük koleksiyonlar daha uzun sürer. Çok büyük koleksiyonlar (yüzlerce GB) önemli ölçüde daha uzun sürebilir. Önce geri alınabilir alanı tahmin etmek için dryRun: true kullanmanızı ve işlemi yoğun olmayan saatlerde çalıştırmanızı öneririz.

Aşağıdaki veriler yalnızca referans amaçlıdır:

Gerçek dünya testi (MongoDB 4.4): Yaklaşık %50 parçalanmaya sahip 2,5 GB'lık bir koleksiyonda compact çalıştırmak yaklaşık 5 saniye sürdü ve yaklaşık 1,9 GB alan boşalttı.

Compact'ın etkili olmadığı senaryolar

Aşağıdaki senaryolar compact komutunun etkisiz kalmasına neden olabilir:

  • Fiziksel koleksiyon boyutu 1 MB'tan küçüktür.

  • Parçalanma oranı %20'nin altındadır.

  • Dosyanın ilk %80'inde %20'den az boş alan varsa veya dosyanın ilk %90'ında %10'dan az boş alan varsa.

Daha fazla bilgi için bkz. block_compact.

Çoğaltma kümesi örnekleri

Önemli

Compact'ı doğrudan birincil düğümde çalıştırmak önerilmez. Compact önemli G/Ç ve CPU kaynakları tüketir; birincil düğümde çalıştırıldığında çevrimiçi iş yüklerini etkileyebilir. İkincil düğümlerde çalıştırmanızı ve ardından yük devretme yoluyla düğümleri döndürerek her bir düğümü sırayla geri almanızı öneririz.

Bağımsız (StandAlone) bir örneğin yalnızca bir düğümü vardır. Buna bağlanın ve compact'ı doğrudan çalıştırın.

Bir İkincil düğüme bağlanın ve aşağıdaki komutları çalıştırın:

use <database>

// Before reclamation: check database space usage for comparison
db.stats()

// Dry run: estimate reclaimable space without actually reclaiming
db.runCommand({ compact: "<collection>", dryRun: true })

// Actual reclamation
db.runCommand({ compact: "<collection>" })

// After reclamation: check again to compare space
db.stats()

dryRun: true parametresi herhangi bir dosyayı değiştirmeden yalnızca estimatedBytesFreed (boşaltılabilecek tahmini bayt sayısı) değerini döndüren kuru çalıştırma modunu etkinleştirir. Kuru çalıştırma sonuçlarını inceledikten sonra bu parametreyi kaldırın ve gerçek geri almayı çalıştırın. Veritabanı alanı kullanımını karşılaştırmak ve sonucu onaylamak için geri almadan önce ve sonra db.stats() çalıştırın.

Not

Aynı koleksiyonda yeni bir compact başlatmadan önce önceki compact işleminin tamamlandığından emin olun.

force:true parametresi hakkında

Aktif bir birincil düğüme doğrudan bağlanıp compact çalıştırırsanız aşağıdaki koruyucu hatayı alırsınız:

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

Bu bir MongoDB koruma mekanizmasıdır: Birincil düğümde compact çalıştırmak çalışan işlemleri yavaşlatır; bu nedenle sistem bunu varsayılan olarak engeller. force parametresi birincil düğümde çalıştırırken true olarak ayarlanmalıdır. force:true parametresi yalnızca bu koruma katmanını bypass eder. İş yükleriniz üzerindeki etkisini ortadan kaldırmaz.

  • Kesinlikle gerekli olmadıkça force:true kullanmaktan kaçının.

  • Gizli düğümleri geri almak için konsol depolama analizi veya otomatik geri alma planı kullanın ya da bunun yerine İkincil düğümlerde compact çalıştırın (bu düğümler force gerektirmez).

  • Birincil düğümde force:true ile compact çalıştırmak zorundaysanız bunu yoğun olmayan saatlerde yapın ve etkiyi önceden değerlendirin.

Parçalı küme örnekleri

Parçalı kümeler için yalnızca Shard bileşenindeki karşılık gelen düğümlerden parçaları geri almanız gerekir. Mongos ve ConfigServer bileşenleri kullanıcı verisi depolamaz ve geri alma gerektirmez.

Parçalı kümelerdeki salt okunur düğümler compact komutunu desteklemez; bu nedenle salt okunur (ReadOnly) düğümlerden parçaları geri alamazsınız.

İkincil düğüm parçalarını geri alma: runCommandOnShard çalıştırırken okuma tercihini Secondary olarak ayarlamanız gerekir. Sözdizimi istemciye göre değişir. İstemciniz için uygun yöntemi seçin:

mongosh 2.x

mongosh 2.x runCommand ikinci parametresinde okuma tercihini doğrudan belirtmeyi destekler:

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

mongosh 1.x

mongosh 1.x komutu çalıştırmadan önce okuma tercihini setReadPref aracılığıyla ayarlamayı gerektirir:

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

mongo shell (legacy)

mongo shell (legacy) okuma tercihini belirtmek için $queryOptions eklemeyi gerektirir:

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

Birincil düğüm parçalarını geri alma (önerilmez):

Önemli

Hizmet etkisini en aza indirmek için Birincil düğümü İkincil düğüme geçirmek üzere bir birincil/ikincil yük devretme gerçekleştirmenizi ve ardından parçaları yeni İkincil düğümden geri almanızı öneririz. Birincil/ikincil yük devretme talimatları için bkz. Parçalı küme örneği için birincil/ikincil geçiş.

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

SSS ve sorun giderme

Geri alma çalıştırıldı ancak görünür etki yok

Aşağıdakileri sırayla kontrol edin:

  1. İşlem ve doğrulama arasında düğüm uyumsuzluğu (en yaygın neden): Konsol depolama analizi Gizli düğümlerden parçaları geri alır ve sayfa varsayılan olarak Gizli düğümler için parçalanma oranını görüntüler. Komut satırı compact bağlandığınız düğümü etkiler. Birincil veya ikincil düğümde compact çalıştırdıysanız ancak konsol depolama analizinde parçalanma oranını kontrol ettiyseniz sayılar değişmez. Doğru yaklaşım: Monitoring Information sayfasına gidin ve disk alanı kullanımını görüntülemek için işlemi gerçekten gerçekleştirdiğiniz düğüme geçin.

  2. Dahili dosya parçalanması: compact yalnızca bir dosyanın sonundaki bitişik boş alanı kısaltabilir. Dosya içindeki yeniden kullanılabilir alan geri alınamaz. Parçalar dosya içinde dağılmışsa compact sonrasında disk alanı neredeyse değişmeden kalabilir. Bu WiredTiger depolama altyapısının beklenen davranışıdır bir arıza değildir. Geri alınabilir alanı tahmin etmek için db.<collection>.stats() çalıştırın ve freeStorageSize ile storageSize oranını kontrol edin.

  3. Geri alma eşiğinin altında: Parçalanma oranı %20'nin altındaysa fiziksel koleksiyon boyutu 1 MB'tan küçükse veya koleksiyon küçükse mutlak geri alınabilir alan çok küçüktür ve geri almanın görünür bir etkisi olmayabilir.

  4. Birincil düğüm koruması işlemi engelledi: use force:true to force görürseniz bu compact'ın birincil düğümde çalıştırıldığını belirten koruma mekanizmasıdır. Force kullanmayın. Bunun yerine compact'ı Gizli veya İkincil düğümde çalıştırın veya Gizli düğümleri geri almak için konsol depolama analizini kullanın.

Parçalanma oranı neden %0'a düşmüyor?

Bu beklenen bir davranıştır. compact yalnızca bir dosyanın sonundaki bitişik boş alanı geri alır. Dosya içindeki yeniden kullanılabilir alan gelecekteki yazmalar için korunur. Bu nedenle parçalanma oranı tipik olarak %0'a düşemez. Bu WiredTiger depolama altyapısının bir tasarım tercihidir.

Hata: not authorized / Yetkisiz

Compact çalıştırmak için dbAdmin veya hostManager (sürüm > 8.0) izinleri gerekir. Aksi takdirde bir izin hatası bildirilir. Bkz. İzin gereksinimleri.

Hata: Interrupted ... cache eviction pressure

Neden: Compact yürütme sırasında WiredTiger depolama altyapısı önbellek tahliye baskısı yaşar. Eski sürümler ve küçük teknik özelliklere sahip örneklerin bellek kaynakları sınırlıdır. Önbellek baskısı çok yüksek hale geldiğinde ve altyapı sayfaları zamanında tahliye edemediğinde compact kesintiye uğrar ve erken çıkar.

Çözüm: Yoğun olmayan saatlerde yeniden deneyin, bir birincil/ikincil yük devretme tetikleyip tekrar deneyin veya geri almadan önce örnek teknik özelliklerini yükseltin.

Disk doluluğu nedeniyle örnek kilitlendiğinde compact çalıştırabilir miyim?

Evet. Disk dolduğunda örnek kilitli duruma geçer. Yazma (insert) ve silme (delete) işlemleri cloud instance error, disk locked... hatasıyla reddedilir ancak find, compact ve drop işlemleri hala çalıştırılabilir.

Not

Silme işlemi neden reddediliyor?

Silme işlemi kendisi oplog'a yazar ve hala disk alanı tüketir; bu nedenle kilitli durumda reddedilir. Ancak drop ve compact meta veri düzeyinde veya alan yeniden düzenleme işlemleridir ve sistem tarafından izin verilir. Kilitli durumda parçaları geri almak ve alan boşaltmak için compact çalıştırabilir veya koleksiyonları silmek ve alan boşaltmak için drop çalıştırabilirsiniz. Her ikisi de ölçeklendirmeyi gerektirmeyen kurtarma yollarıdır.

En hızlı kurtarma kararı

Durumunuz

Önerilen eylem

Kurtarma hızı

Maliyet

Güvenle silinebilecek kullanılmayan koleksiyonlarınız veya veritabanlarınız var.

drop çalıştırın (drop kilitli durumda izin verilir).

Alan boşaltıldıktan sonra örnek yaklaşık 4 ila 5 dakika içinde otomatik olarak kilidi açar (bir algılama gecikmesi vardır; anlık değildir).

Maliyet yok ancak veriler silinir. Verilerin silinebileceğini onaylayın.

Veriler silinemez ancak geri alınacak önemli parçalar var.

Compact çalıştırın (compact kilitli durumda izin verilir).

Compact alan boşalttıktan sonra örnek yaklaşık 5 dakika içinde otomatik olarak kilidi açar (bir algılama gecikmesi vardır; anlık değildir).

  • Maliyet yok, veri silinmez.

  • Geri alma etkinliği parçalanma oranına ve dağılımına bağlıdır.

  • Hizmet performansını etkileyebilir. Bkz. Compact'ın iş yüklerine etkisi.

Silinecek veri yok / veri kaybolamaz.

Depolama alanını ölçeklendirin.

Ölçeklendirme tamamlandıktan sonra kilit açılır.

Not

Kilit açıldıktan sonra diskin tekrar dolmasını önlemek için parçaları hızla geri alın veya kullanılmayan verileri temizleyin. Bkz. Tükenmiş disk alanından kaynaklanan örnek kilidini çözün.

Konsol kullanımı uyarılarla eşleşmiyor (örneğin, konsol %60 gösteriyor ancak uyarı %90'da tetikleniyor)

Bu bir veri hatası değil farklı görüntüleme boyutlarından kaynaklanır:

  • Uyarılar "en yüksek tek düğüm" üzerinde tetiklenir: Bir çoğaltma kümesinde Birincil, İkincil ve Gizli düğümlerin disk kullanımı farklı olabilir (oplog, geri alma zamanlaması, geçici dosyalar ve diğer nedenlerle İkincil/Gizli düğümler genellikle Birincil'den daha yüksektir). Herhangi bir tek düğüm eşiği aştığında bir uyarı tetiklenir.

  • Konsol varsayılan olarak "en yüksek düğümü" göstermez: Örnek Basic Information sayfası toplu bir değer gösterir ve Storage Analysis sayfası varsayılan olarak Gizli düğümü gösterir. Her ikisi de uyarıyı tetikleyen düğümden daha düşük olabilir.

Her düğümün gerçek kullanımını nasıl görüntülersiniz: Örnek Monitoring Information sayfasına gidin görüntüleme modunu Sub-node independent olarak değiştirin ve uyarıyı tetikleyen yüksek kullanıma sahip düğümü bulmak için her Birincil / İkincil düğümün disk alanı kullanımını ayrı ayrı görüntüleyebilirsiniz.

Birincil ve ikincil düğüm disk kullanımının neden farklı olduğu ve bunun nasıl ele alınacağı hakkında daha fazla bilgi için bkz. ApsaraDB for MongoDB örneklerinin yüksek disk alanı kullanımı.

Para tasarrufu yapmak için diski küçültebilir miyim?

Küçültme desteklenmez. ApsaraDB for MongoDB hiçbir sürüm için satın alınan disk alanının azaltılmasını desteklemez. Büyük miktarda veriyi temizleyip parçaları geri alsanız bile disk teknik özelliklerini yalnızca koruyabilir veya artırabilirsiniz. Doğrudan azaltamazsınız.

Daha küçük bir disk teknik özelliğine ihtiyacınız varsa tek seçenek daha küçük bir teknik özelliğe sahip yeni bir örnek oluşturmak verilerinizi DTS kullanarak geçirmek ve ardından orijinal örneği serbest bırakmaktır. Devam etmeden önce geçiş maliyetini ve kesinti süresi penceresini değerlendirin.

Yapılandırma değişikliği ve teknik özellik sınırları için bkz. Çoğaltma kümesi örneği yapılandırmasını değiştirin.

Ek

Disk parçaları neden oluşur?

delete komutu veya TTL süresi dolması kullanılarak veriler silindiğinde yalnızca silindi olarak işaretlenir. Kapladığı alan hemen işletim sistemine iade edilmez. Bunun yerine gelecekteki yazmalar için ücretsiz bloklar olarak saklanır. Silmeler yazmalardan daha hızlı olduğunda bu ücretsiz bloklar uzun süre kullanılmadan kalır ve parçalar oluşturur. Bu nedenle veri hacmi azalsa bile disk kullanımı yüksek kalır.

Disk parçaları ne zaman geri alınmalı

Aşağıdaki durumlarda disk parçalarını geri almayı düşünün:

  • Büyük hacimli veri silindikten sonra: Çok sayıda belge sildiğinizde boşaltılan alan işletim sistemine iade edilmez gelecekteki yazmalar için ayrılır ve diskte önemli miktarda parçalanmış alan bırakır.

    Önemli

    Manuel silme (delete) ve TTL süresi dolması disk parçalarını otomatik olarak geri almaz. Manuel geri alma gerekir.

  • Uzun süreli yüksek yazma iş yüklerinden sonra: Sürekli yüksek yazma iş yükleri (sık inserts, updates ve deletes) diskte yavaş yavaş parçalanmış alan biriktirir.

  • Disk alanı düşük ve parçalanma %20'yi aştığında: Disk kullanımı %85 ila %90 veya daha yüksek seviyelere ulaştığında parçaları geri almak alanı boşaltabilir ve depolama baskısını azaltabilir.

Geri alınabilir alanı görüntüleme ve tahmin etme

Örneğe bağlanın (çoğaltma kümesi örnekleri için hizmet etkisini en aza indirmek amacıyla bir İkincil düğüme bağlanın) ve bir koleksiyonun depolama durumunu görüntülemek için db.runCommand({collStats: "<collection>"}) çalıştırın. Aşağıdaki alanlara dikkat edin:

  • size: Koleksiyonun mantıksal depolama boyutu.

  • storageSize: Koleksiyonun fiziksel depolama boyutu.

  • freeStorageSize: Koleksiyon içindeki geri alınabilir boş alan (MongoDB 4.4 ve sonraki sürümlerde mevcuttur).

remove komutuyla belgeleri sildikten sonra size azalır ancak storageSize değişmeyebilir. freeStorageSize ile storageSize oranının daha yüksek olması daha yüksek bir parçalanma oranını gösterir.

Ayrıca bir koleksiyonun geri alınabilir parça alanını tahmin etmek için aşağıdaki komutu çalıştırabilirsiniz (yeniden kullanılabilir bayt sayısını döndürür):

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

Neredeyse boş örnekler için freeStorageSize null döndürebilir. Bu durumda parçalanma oranını tahmin etmek için wiredTiger["block-manager"]["file bytes available for reuse"] (yeniden kullanılabilir baytlar) ve ["file size in bytes"] (toplam dosya boyutu) değerlerini kontrol edin. Alan açıklamaları için bkz. collStats Output.