MongoDB remove() VS drop() PERFORMANS FARKI

remove(): Collection içinde bulunan tüm document’ları tek tek siler.

drop(): komple collection’ı veritabanından kaldırır. Eğer collection’daki tüm verileri sileceksek ( indexler dahil) drop() kullanmanızı tavsiye ederim, çünkü çok daha hızlıdır.

Aradaki performans farkını ölçmek için bir milyon kayıtlı iki adet farklı collection oluşturup, birinci collection’nın verisini remove() ile, diğer collection’nın verisini drop() ile silip, iki işlem arasındaki zamanı aşağıdaki işlemle kıyaslıyoruz.

öncelikle testData1 ve testData2 isimli collection’lara dummy documentlar kaydediyorum.

for (var i = 0; i < 1000000; i++) {
db.testData1.insert({"anahtar": "değer", "satır no": i, "x": 10 - i})
}

for (var i = 0; i < 1000000; i++) {
db.testData2.insert({"anahtar": "değer", "satır no": i, "x": 10 - i})
}

MongoDB test (dummy) data insert
MongoDB test (dummy) data insert

removeColleciton isimli function tanımlıyorum (içerisinde testData1 collection’daki document ları remove edecek satır ve bu işlem süresini kaydedecek değişkenler mevcut. En sonunda print fonksiyonu, geçen süreyi ekrana basacak.

Not: : eğer remove fonksiyonunu boş çağırırsanız hata verir bu sebeple “remove({})” şeklinde çalıştırıyorum

var removeColleciton = function() {
var baslangicR = (new Date()).getTime();
db.testData1.remove({});
db.testData1.findOne(); //sonraki satıra geçmeden bittiğinden emin olunur.
var olusturma_suresi_r = (new Date()).getTime() - baslangicR;
print("Remove Süresi: "+olusturma_suresi_r+"ms");
}

dropColleciton isimli function tanımlıyorum (içerisinde testData2 collection’daki document ları drop edecek satır ve bu işlem süresini kaydedecek değişkenler mevcut. En sonunda print fonksiyonu, geçen süreyi ekrana basacak.

Not: MongoDB’de bulunan drop() fonksiyonu parametre almaz.

var dropColleciton = function() {
var baslangicD = (new Date()).getTime();
db.testData2.drop();
db.testData2.findOne(); //sonraki satıra geçmeden bittiğinden emin olunur.
var olusturma_suresi_d = (new Date()).getTime() - baslangicD;
print("Drop Süresi: "+olusturma_suresi_d+"ms");
}

artık kendi oluşturduğumuz removeColleciton() ve dropColleciton() fonksiyonlarını çağırabiliriz.

removeColleciton()

dropColleciton()

MongoDB - remove vs drop performance
MongoDB – remove vs drop performance

Ekran çıktısında görüldüğü üzere remove() 9892ms’de tamamlanıyor, drop() ise 6ms’de tamamlanıyor. Bu sonuca bakıp drop() % şu kadar hızlıdır diyemeyiz, çünkü colleciton içindeki index’e, veriyapısına göre değişiklik gösterebilir.

remove() : 9892ms

drop() :6ms

Ref: MongoDB – The Definitive Guide, 2nd Ed.

Leave a Reply

Your email address will not be published. Required fields are marked *