1. WiredTiger Cache Ayarları
MongoDB'nin default ayarlarında, WiredTiger depolama motoru belleği çok verimli kullanacak şekilde yapılandırılmıştır. Ancak, özellikle büyük veri kümeleriyle çalışan projelerde, bu ayarı optimize etmek çok önemlidir. Eğer bellek kullanımını iyileştirmek istiyorsanız, WiredTiger için `storage.wiredTiger.engineConfig.cacheSizeGB` parametresini değiştirebilirsiniz. Bu sayede, veritabanı daha verimli çalışacak ve daha hızlı erişim sağlayacaktır.
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4
Bu ayarla, MongoDB'nin bellekte daha fazla veri tutmasını sağlayarak disk okuma ve yazma işlemlerini azaltabilirsiniz.
2. Replica Set Timeout Ayarları
Replica set ile çalışan bir MongoDB veritabanı kullanıyorsanız, replikaların birbirine ne kadar hızlı bağlandığını belirlemek çok önemlidir. `rs.stepDown()` komutu, replikaların yeniden senkronize olmasına neden olur. Bu durumda, `settings.electionTimeoutMillis` parametresi çok kritik bir rol oynar. Eğer bu ayar çok düşükse, seçimler çok hızlı yapılacak ve bu da performansı olumsuz etkileyebilir.
settings:
electionTimeoutMillis: 10000
Bu şekilde, daha uzun süreli seçim zaman aşımı ile replikalar arasında gereksiz geçişleri engellemiş olursunuz.
3. Index Kullanımı ve Optimize Edilmesi
MongoDB’de indeks kullanımı, performansın en önemli bileşenlerinden biridir. Yanlış indeksleme, sorguların yavaşlamasına yol açabilir. MongoDB, otomatik olarak bazı indeksleri oluşturur ancak genellikle özel indeksler oluşturmak faydalı olacaktır. Eğer veritabanınızda belirli alanlara sıkça sorgu yapıyorsanız, bu alanlara indeks eklemeyi unutmayın. İndeks eklemek için şu komutu kullanabilirsiniz:
db.collection.createIndex({ "fieldName": 1 })
İndekslerinizi düzenli olarak kontrol etmek, gereksiz indeksleri kaldırmak ve sadece sıklıkla kullanılan alanlarda indeksleme yapmak, sorgu sürelerinizi ciddi şekilde azaltabilir.
4. Sharding Ayarları
Veritabanı boyutunun büyüdüğü projelerde, verilerin farklı sunuculara dağılmasını sağlamak için sharding kullanmak önemlidir. MongoDB, verilerinizi yatayda ölçeklendirmek için harika bir araçtır. Sharding işlemi sırasında doğru shard anahtarını seçmek, performansı doğrudan etkileyebilir. Shard anahtarını seçerken, verilerinizi düzenli bir şekilde dağıtacak ve tek bir sunucuya aşırı yük bindirmeyecek bir alan seçtiğinizden emin olun.
sh.shardCollection("yourDatabase.yourCollection", { "shardKey": 1 })
Bu ayar, verilerinizin doğru bir şekilde bölünmesini sağlayarak her bir shard'ın eşit yük taşımasını sağlar.
5. Connection Pooling Ayarları
MongoDB ile yoğun veri trafiği olan uygulamalar geliştirdiyseniz, bağlantı havuzları çok önemli hale gelir. `maxPoolSize` parametresi, MongoDB'ye yapılan bağlantıların sayısını kontrol eder. Bağlantı havuzunu çok küçük tutmak, fazla bağlantı kurma gereksizliğinden dolayı uygulamanızın gecikmesine yol açabilir. Bu yüzden havuz boyutunu arttırarak daha fazla eşzamanlı bağlantıyı destekleyebilirsiniz.
mongodb://localhost:27017/?maxPoolSize=100
Yüksek bağlantı havuzları ile uygulamanızın veri erişim hızını önemli ölçüde artırabilirsiniz.
6. Storage Engine Configurations
MongoDB, iki farklı depolama motoru sunar: WiredTiger ve MMAPv1. Eğer eski sürümlerle çalışıyorsanız, MMAPv1 motorunu kullanıyor olabilirsiniz. Ancak, WiredTiger, çok daha iyi performans sunar ve veritabanı işlemlerinin daha hızlı gerçekleşmesini sağlar. Eğer MMAPv1 kullanıyorsanız, veritabanınızı WiredTiger’a geçirmeniz gerekecektir.
storage:
engine: wiredTiger
Bu basit değişiklik, veritabanınızın performansını çok ciddi anlamda artıracaktır.
7. Otomatik Yedekleme Ayarları
Veritabanınızın güvenliği kadar performansı da önemli olmalıdır. MongoDB’nin otomatik yedekleme özelliği, veri kaybını önlerken, veritabanı üzerinde aşırı yük oluşturmamalıdır. Yedeklemeleri gece saatlerine denk getirerek veya veritabanınızın yoğun olmayan zamanlarına planlayarak, veritabanınızın performansını etkilemeden veri güvenliğini sağlayabilirsiniz.
backup:
schedule: "0 3 * * *"
Yedekleme işlemlerinin veritabanınızın yoğun saatlerine denk gelmemesi, MongoDB’nin daha verimli çalışmasını sağlar.
Sonuç
MongoDB'yi doğru yapılandırmak ve performansını artırmak, veritabanınızın verimli bir şekilde çalışması için kritik öneme sahiptir. Bu 7 ayar, MongoDB'nin potansiyelini en üst düzeye çıkararak size daha hızlı ve daha verimli bir veritabanı deneyimi sunacaktır. Unutmayın, her bir projede veritabanı ayarlarını dikkatle incelemek ve doğru yapılandırmak önemlidir. Bu basit ama etkili değişikliklerle, MongoDB'nin performansını oldukça iyileştirebilirsiniz!