Index ve Yavaş Sorgu Analizi
WHERE ve JOIN kullanan alanlarda uygun index yoksa her sorgu tabloyu baştan sona tarar; tablo büyüdükçe sorgu süresi katlanarak artar. Slow query log'unu açın, şüpheli sorguları EXPLAIN ile inceleyin ve eksik index'leri tamamlayın. Öte yandan her alana index atmak yazma işlemlerini yavaşlatır; dengeyi ölçümle kurun.
WordPress'te iki klasik sorun saklanır: wp_options tablosunda autoload değeri açık olan şişkin kayıtlar ve birikmiş postmeta verisi. Bu ikisi periyodik temizlikle ciddi biçimde rahatlar; büyük temizlik işleminden önce mutlaka yedek alın, temizlik sonrası sorgu sürelerini karşılaştırıp farkı raporlayın.
Bakım Rutini ve Büyüme Yönetimi
Tablolar büyüdükçe optimizasyon ve istatistik güncellemesi ihtiyacı doğar; bu işlemleri ziyaretçinin en az olduğu gece bakım penceresinde yapın. Veri hacmi büyüdükçe arşivleme ve partitioning gibi yöntemler gündeme gelir: eski sipariş ve log kayıtlarını ayrı bir arşiv tablosuna taşımak üretim tablolarını hafifletir ve sorguları hızlandırır.
Medya dosyalarını veritabanında blob olarak tutmayın; dosya sistemine taşıyın ve tabloda yalnızca dosya yolunu saklayın. Test ortamında üretim boyutuna yakın veriyle çalışın; üç kayıtlık test verisi üretimdeki davranışı asla yansıtmaz, darboğazlar ancak gerçek boyutta ortaya çıkar.
Yedek, Kurtarma ve Replikasyon
Yalnızca dosya yedeği veritabanını kurtarmaz; DB için ayrı ve düzenli yedek alın. Dump tabanlı yedekler ve binlog ile belirli bir ana dönebilme (point-in-time recovery) mümkündür; tolere edebileceğiniz veri kaybını, yani RPO'nuzu bilin. Geri yükleme süresini gerçekten ölçün; kâğıt üzerinde beş dakika süren işlem denemeden bilinmez.
Yüksek okuma trafiği olan uygulamalarda read replica mimarisi düşünülebilir; ancak yazmanın tek kaynakta kaldığından emin olun. Yedeklerinizi şifreleyin ve offsite saklayın; aynı diskte duran yedek, disk arızasında beraber gider.
Güvenlik ve Yetki Yönetimi
Veritabanı güvenliği birkaç disiplinli alışkanlıkla kurulur: güçlü ve benzersiz DB parolaları, uzaktan root erişiminin kapalı tutulması, uygulama kullanıcısına yalnızca gereken yetkilerin verilmesi (least privilege) ve düzenli yama. phpMyAdmin gibi yönetim araçlarının erişimini kısıtlamaya özen gösterin.
Uygulama tarafında SQL injection'a karşı prepared statement kullanımı pazarlık konusu değildir; ORM kullanıyorsanız bile ham sorgularda bunu denetleyin. Bananas Hosting güncel donanımı ve kaynaklı planlarıyla DB performansına zemin hazırlar; düzenli hijyen rutini ise sizin elinizdedir.
Practical tips
- Slow query log'unu ayda bir gözden geçirin; en yavaş üç sorguyu listeleyip düzeltin.
- Veritabanı yedeğini dosya yedeğinden ayrı olarak ve düzenli aralıklarla test edin.
- Uygulamanın DB kullanıcısına root değil, sadece gereken tablolar için yetki verin.
- Büyük ALTER ve index işlemlerini trafiğin düşük olduğu bakım penceresine planlayın.