Veritabanı Optimizasyonu: WordPress/MySQL Temizliği

Hostmana 06 Haziran 2026 8 dk okuma

Veritabanı optimizasyonu, çoğu yavaş WordPress sitesinde göz ardı edilen ama en hızlı sonuç veren işlemlerden biridir. Görselleri sıkıştırır, önbellek kurar, CDN bağlarsınız; ama her sayfa isteğinde arka planda çalışan MySQL veritabanı yıllar içinde gereksiz kayıtlarla şişmişse site yine de takılır. Bu yazıda WordPress'in wp_posts, wp_postmeta ve wp_options tablolarının neden büyüdüğünü, hangi verileri güvenle silebileceğinizi ve tabloları nasıl optimize edeceğinizi adım adım anlatıyoruz. Amaç teori değil; elle veya eklentiyle uygulayabileceğiniz somut bir temizlik planı.

Veritabanı neden zamanla şişer?

WordPress, içerik üretmedikçe bile arka planda sürekli veri yazar. Bir süre sonra veritabanınızın büyük kısmı aslında ölü ağırlıktır. En sık karşılaşılan şişme kaynakları:

  • Yazı revizyonları: WordPress her kaydetmede bir kopya tutar. Tek bir uzun blog yazısının onlarca revizyonu olabilir — hepsi wp_posts içinde durur.
  • Otomatik taslaklar ve çöp kutusu: Silinen ama kalıcı kaldırılmamış yazı/sayfa/yorumlar trash durumunda bekler.
  • Spam ve onay bekleyen yorumlar: Özellikle iletişim formu olan sitelerde binlerce spam yorum birikir.
  • Transient (geçici) kayıtlar: Eklentiler hızlanmak için wp_options tablosuna geçici veri yazar. Süresi dolan transient'ler çoğu zaman otomatik silinmez ve _transient_ önekiyle birikir.
  • Yetim metadata: Silinmiş yazı veya kullanıcılara ait wp_postmeta / wp_usermeta satırları geride kalır.
  • Kaldırılan eklentilerin artıkları: Birçok eklenti silinince kendi tablolarını veya wp_options kayıtlarını temizlemez.
  • autoload şişmesi: wp_options içindeki bazı kayıtlar her sayfa yüklemesinde belleğe alınır. Birikmiş büyük autoload verisi, her isteği yavaşlatır.

Sonuç: yedeklemeler büyür, sorgular yavaşlar ve paylaşımlı hosting disk/bellek limitlerine daha hızlı dayanırsınız.

Başlamadan önce: mutlaka yedek alın

Veritabanı işlemleri geri alınamaz. Tek bir yanlış DELETE sorgusu siteyi çökertebilir. Bu yüzden hiçbir temizliğe yedek almadan başlamayın.

  • Hosting kontrol panelinizden (DirectAdmin/Plesk) veya phpMyAdmin'den veritabanının tam .sql dışa aktarımını indirin.
  • Mümkünse temizliği önce bir test (staging) ortamında deneyin.
  • Otomatik yedek alan bir eklentiniz varsa, son yedeğin tarihini kontrol edin.

Yedeği aldıktan sonra rahatça ilerleyebilirsiniz.

1. Revizyonları, taslakları ve çöp kutusunu temizleyin

İlk hedef wp_posts tablosudur. Revizyon sayısını tamamen sıfırlamak yerine sınırlamanızı öneririz; geçmişe dönme imkânını korur ama şişmeyi engeller. wp-config.php dosyanıza ekleyin:

define('WP_POST_REVISIONS', 5);   // yazı başına en fazla 5 revizyon
define('EMPTY_TRASH_DAYS', 7);    // çöp kutusu 7 günde otomatik boşalsın

Mevcut birikmiş revizyonları silmek için eklenti kullanmak en güvenli yoldur (aşağıda öneriyoruz). Elle SQL ile yapacaksanız, önce kaç satır olduğunu görün, sonra silin:

-- Sadece görmek için:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
-- Silmek için (yedek aldıysanız):
DELETE FROM wp_posts WHERE post_type = 'revision';

Not: Tablo öneki sitenize göre wp_ yerine başka bir şey olabilir (örneğin wp_a1b2_). Sorguları kendi önekinize göre uyarlayın.

Aynı mantıkla auto-draft (otomatik taslak) ve trash durumundaki kayıtları da temizleyebilirsiniz.

2. Spam ve onay bekleyen yorumları silin

Yorum spam'i hem wp_comments hem de wp_commentmeta tablolarını şişirir. WordPress yönetim panelinden Yorumlar > Spam > Hepsini Sil ile toplu temizlik yapabilirsiniz. Çok fazla birikmişse panel zaman aşımına uğrayabilir; bu durumda eklenti veya phpMyAdmin'den parça parça silme daha güvenlidir. Yorum spam'iyle baş etmenin en kalıcı yolu bir spam koruma eklentisi kullanmaktır, çünkü sürekli birikmeyi en baştan engeller.

3. Süresi dolan transient'leri ve autoload'u kontrol edin

wp_options tablosu küçük gibi görünür ama performans açısından kritiktir, çünkü autoload = yes olan kayıtlar her sayfa yüklemesinde belleğe alınır. En büyük autoload kayıtlarını görmek için:

SELECT option_name, LENGTH(option_value) AS boyut
FROM wp_options
WHERE autoload = 'yes'
ORDER BY boyut DESC
LIMIT 20;

Burada beklenmedik şekilde büyük (yüzlerce KB) kayıtlar görürseniz, genellikle eski veya kaldırılmış bir eklentiye aittir. Süresi dolmuş transient'leri temizlemek için ise WordPress'in kendi fonksiyonu güvenli yoldur — bunu bir eklenti veya WP-CLI ile tetikleyebilirsiniz:

wp transient delete --expired   # WP-CLI ile süresi dolmuş transient'leri sil

WP-CLI erişiminiz yoksa, aşağıdaki temizlik eklentileri transient'leri arayüzden silmenizi sağlar.

4. Tabloları optimize edin (OPTIMIZE TABLE)

Sürekli silme/yazma işlemi MySQL tablolarında boş alan parçalanmasına (overhead) yol açar. Veri silinir ama tablonun fiziksel boyutu küçülmez — disk üzerinde "delik" kalır. OPTIMIZE TABLE bu boşluğu geri kazanır ve sorgu performansını toparlar.

phpMyAdmin'de veritabanını açın, Yapı sekmesinde "Overhead" sütununda dolu olan tabloları seçin, alttan Tabloyu optimize et komutunu çalıştırın. Tek satırda da yapabilirsiniz:

OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments;

Önemli: OPTIMIZE TABLE, InnoDB tablolarında çalışırken tabloyu kısa süreliğine kilitleyebilir. Büyük tablolarda bu işlemi trafiğin düşük olduğu saatlerde yapın.

5. İndeksleri ve büyük tabloları gözden geçirin

WordPress varsayılan tabloları zaten temel indekslerle gelir, ama yıllar içinde eklentilerin oluşturduğu özel tablolar (örneğin form girişleri, log kayıtları, e-ticaret oturumları) indekssiz ve dev olabilir. En çok yer kaplayan tabloları bulmak için:

SELECT table_name, ROUND((data_length + index_length)/1024/1024, 2) AS mb
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY mb DESC
LIMIT 15;

Listenin başında tanımadığınız bir tablo varsa (wp_ önekli olmayan veya kaldırdığınız bir eklentiye ait), o eklentinin temizlik sürecini araştırın. İndeks ekleme/silme uzmanlık gerektirir; emin değilseniz bu adımı hosting destek ekibinize danışarak yapın. Çoğu durumda 1-4. adımlardaki temizlik, indekse dokunmadan ciddi kazanç sağlar.

Elle SQL mi, eklenti mi? Karşılaştırma

Yöntem Avantaj Dezavantaj Kime uygun
Temizlik eklentisi Tek tıkla revizyon/transient/spam temizliği, zamanlanmış çalışma Sürekli açık kalırsa kendisi yük olur Yeni başlayanlar, çoğu kullanıcı
phpMyAdmin / elle SQL Tam kontrol, eklenti yükü yok Yanlış sorgu riski, dikkat ister Orta-ileri kullanıcılar
WP-CLI Hızlı, betiklenebilir, sunucuda toplu işlem Komut satırı + SSH erişimi gerekir Geliştiriciler, ajanslar

Önerimiz: Düzenli bakım için bir eklenti kurun ama temizlik işi bitince zamanlanmış otomatik temizliği kapatın ya da seyrek (örneğin ayda bir) ayarlayın. Sürekli çalışan optimizasyon eklentileri, çözmeye çalıştıkları sorunun bir parçası olabilir.

Sık kullanılan temizlik eklentileri

  • WP-Optimize: Revizyon, transient, spam ve çöp temizliğini tek panelde toplar; tablo optimize ve zamanlama özelliği vardır. Yeni başlayanlar için en pratik seçenek.
  • Advanced Database Cleaner: Yetim metadata ve "tanımsız" (orphan) wp_options kayıtlarını tespit etmekte güçlüdür. İleri kullanıcılar için detaylı kontrol sunar.
  • Spam koruması: Yorum/form spam'ini en baştan engelleyen bir antispam eklentisi, temizlik döngüsünü kalıcı olarak kısaltır.

Eklenti seçerken son güncelleme tarihine ve WordPress sürüm uyumuna dikkat edin; terk edilmiş bir eklenti, çözdüğünden çok güvenlik riski getirir.

Ne sıklıkla yapmalı?

Temizlik tek seferlik bir iş değildir. Pratik bir takvim:

  • Aylık: Revizyon + süresi dolmuş transient temizliği, spam yorum kontrolü.
  • 3 ayda bir: OPTIMIZE TABLE ve en büyük tabloların gözden geçirilmesi.
  • Eklenti silerken: Kaldırdığınız eklentinin wp_options ve özel tablo artıklarını kontrol edin.

Yoğun trafikli veya e-ticaret sitelerinde tablolar daha hızlı büyür; sipariş ve oturum verileri biriktiği için bakımı sıklaştırın. KVKK kapsamında, sildiğiniz verilerin gerçekten gerekli olmayan veriler olduğundan ve kişisel veri saklama yükümlülüklerinizi ihlal etmediğinizden emin olun — log ve form kayıtlarını silerken bu dengeyi gözetin.

Sonuç

Veritabanı bakımı, yeni bir hosting paketi almadan sitenizi hızlandırmanın en uygun maliyetli yollarından biridir. Önce yedek alın, sonra sırasıyla revizyonları, spam'i ve transient'leri temizleyin, tabloları optimize edin ve düzenli bir bakım takvimi oturtun. Eğer paylaşımlı sunucunuzda MySQL kaynakları artık yetmiyorsa, sorun tek başına veritabanı şişmesi değil, kaynak limitleri olabilir — bu durumda daha geniş bir hosting paketine geçmeyi değerlendirebilirsiniz.

Sitenizin gerçekten yavaş mı yoksa sadece veritabanı mı şiştiğini ölçmek için ücretsiz web araçlarımızla bir hız ve erişilebilirlik testi yapın. Takıldığınız bir nokta olursa veya hangi adımın size uygun olduğundan emin değilseniz, bilgi bankamıza göz atabilir ya da destek ekibimize ulaşabilirsiniz.

Beste Ercan çevrimiçi
Merhaba! Size en uygun hosting/sunucu paketini bulmanızda yardımcı olabilir miyim?
Beste Ercan
Çevrimiçi · size özel paket arıyor