WordPress Veritabanı Optimizasyonu: Autoload, Revizyonlar ve Yavaş Sorgular İçin Rehber

  • Konuyu Başlatan Konuyu Başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi

Admin

Webmaster
Admin
Kurumsal+
Puan 18
Çözümler 0
Katılım
3 Kas 2025
Mesajlar
99
Tepkime puanı
0

WordPress Veritabanı Optimizasyonu: Autoload, Revizyonlar ve Yavaş Sorgular İçin Rehber​

WordPress siteniz yavaşladığında veritabanını temizlemek işe yarayabilir. Ancak bütün revizyonları silmek veya “tabloları optimize et” düğmesine basmak, her performans sorununu çözmez.
Büyük bir veritabanı doğru sorgularla hızlı çalışabilir. Küçük bir veritabanı ise kötü yazılmış bir eklenti, gereksiz sorgular veya yetersiz sunucu kaynakları nedeniyle yavaşlayabilir.
Bu nedenle veritabanı optimizasyonunu üç iş olarak düşünmek daha yararlıdır: gereksiz veriyi azaltmak, uygulamanın veritabanını nasıl kullandığını incelemek ve ölçülen darboğazı gidermek.

Veritabanı Neden Büyür, Ne Zaman Sorun Oluşturur?​

WordPress; yazıları, kullanıcıları, yorumları ve ayarları veritabanında tutar. Eklentiler de kendi tablolarını veya mevcut tablolarda yeni kayıtlar oluşturabilir.
Zaman içinde büyümeye neden olan başlıca veriler şunlardır:
  • Yazı ve sayfa revizyonları.
  • Çöp kutusundaki içerikler ve spam yorumlar.
  • Geçici önbellek kayıtları.
  • Eklenti günlükleri ve işlem geçmişleri.
  • Kullanılmayan uygulama ayarları.
  • Büyük miktarda ürün, sipariş veya içerik metaverisi.
Bu kayıtların hepsi gereksiz değildir. Örneğin sipariş geçmişi işletmenin verisidir; yalnızca tabloyu küçültmek için silinmemelidir. Revizyonlar da editörün eski bir metne dönmesini sağlayabilir.
Önce büyüyen tablonun ne tuttuğunu öğrenin. Ardından hangi verinin saklanması gerektiğine karar verin.

İlk Adım: Ölçüm ve Yedek​

İşleme başlamadan önce mevcut durumu kaydedin. Böylece değişikliğin yararlı olup olmadığını karşılaştırabilirsiniz.
ÖlçümNe anlatır?
Veritabanı ve tablo boyutlarıHangi veri grubunun büyüdüğünü
Toplam sorgu süresiSayfa üretiminde veritabanına harcanan zamanı
Yavaş ve tekrarlanan sorgularUygulama tarafındaki olası darboğazları
Autoload boyutuOtomatik yüklenen ayarların hacmini
CPU, RAM ve disk kullanımıSunucu kaynaklarının durumunu

Karşılaştırmayı aynı sayfalarda ve benzer koşullarda yapın. Önbellekten sunulan ana sayfa ile oturum açılmış yönetici panelini aynı ölçüm gibi değerlendirmeyin.
Ardından veritabanı yedeğini alın. WP-CLI erişiminiz varsa örnek komut:
wp db export /home/hesap/yedekler/veritabani-oncesi.sql
Yolu kendi hesabınıza göre değiştirin ve klasörün mevcut olduğundan emin olun. SQL yedeğini ziyaretçilerin erişebileceği web klasöründe bırakmayın.
wp db export, veritabanını SQL dosyasına aktarır. Site dosyalarını da değiştirecekseniz onların ayrıca yedeklenmesi gerekir.
Kritik bir sitede yedeğin deneme ortamına geri yüklenebildiğini doğrulamak, yalnızca dosyanın oluştuğunu görmekten daha güçlü bir kontroldür.

Autoload Nedir ve Neden İncelenmeli?​

WordPress’in options tablosunda uygulama ayarları bulunur. Autoload, bazı ayarların gerektiğinde tek tek sorgulanmak yerine topluca yüklenmesini sağlar.
Bu mekanizma faydalıdır. Sorun, ihtiyaç duyulmayan büyük veri kümelerinin de otomatik yüklenmesidir.
Güncel WordPress’te autoload kontrolü yalnızca yes değerine dayanmaz. Varsayılan olarak şu değerler otomatik yükleme kapsamındadır:
Kod:
yes
on
auto-on
auto
Dolayısıyla yalnızca WHERE autoload = 'yes' kullanan eski sorgular toplamı eksik gösterebilir.

Autoload boyutu nasıl kontrol edilir?​

Önce Araçlar > Site Sağlığı ekranını inceleyin. WordPress’in varsayılan autoload uyarı eşiği 800.000 bayttır. Bu, incelenmesi gereken bir durumu gösterir; tek başına sitenin yavaşlık nedenini kanıtlamaz.
phpMyAdmin üzerinden toplam boyutu görmek için şu salt okunur sorguyu kullanabilirsiniz:
Kod:
SELECT
    SUM(OCTET_LENGTH(option_value)) AS toplam_bayt
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto');
En büyük kayıtları listelemek için:
Kod:
SELECT
    option_name,
    OCTET_LENGTH(option_value) AS boyut_bayt,
    autoload
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto')
ORDER BY boyut_bayt DESC
LIMIT 20;
Tablo ön ekiniz farklıysa wp_options adını değiştirin. Bu sorgular WordPress’in varsayılan autoload değerlerini esas alır; özel kodla değiştirilmiş davranışlar ayrıca değerlendirilmelidir.

Büyük bir ayar kaydı bulduğunuzda ne yapmalısınız?​

Önce kaydın hangi eklentiye veya özelliğe ait olduğunu belirleyin. Büyük olması, silinebileceği anlamına gelmez.
Eklentinin kendi temizleme seçeneği, güncellemesi veya geliştiricinin önerdiği yöntem varsa onu kullanın. Bir ayarın autoload özelliğini kapatmak, gerektiğinde ayrı sorguyla okunmasına yol açabilir; bu da otomatik olarak hız kazancı demek değildir.
Tanımadığınız kayıtlarda toplu silme veya bütün autoload değerlerini kapatma işlemi uygulamayın.

Transient Temizliği: Geçici Önbelleği Doğru Anlamak​

Transient, belirli süre saklanması amaçlanan geçici veridir. Örneğin bir eklenti dış servisten aldığı yanıtı transient olarak önbelleğe alabilir.
Süresi dolmuş bütün transient’ler her sayfa isteğinde yüklenmez. Ayrıca WordPress’in süresi dolan kayıtlar için temizleme mekanizmaları vardır. Birikme görüyorsanız zamanlanmış görevlerin çalışıp çalışmadığını da kontrol edin.
WP-CLI ile süresi dolmuş transient’leri temizlemek için:
wp transient delete --expired
Bu komut yalnızca süresi dolmuş kayıtları hedefler.
Bütün transient’leri silmek ise önbelleğin yeniden oluşturulmasına ve bazı dış servis isteklerinin tekrarlanmasına neden olabilir. Bu yüzden toplu temizliği rutin bir hızlandırma yöntemi olarak kullanmayın.
Redis veya Memcached gibi kalıcı nesne önbelleği etkinse transient’ler veritabanı yerine bu sistemde tutulabilir. Temizliği, sitenin kullandığı önbellek yapısına göre değerlendirin.

Revizyonları Sınırlayın, İçerik Geçmişini Planlayın​

Revizyonlar, yazıların önceki sürümlerini saklar. İçerik üretimi yoğun sitelerde önemli miktarda kayıt oluşabilir.
Gelecekte tutulacak revizyon sayısını sınırlandırmak için wp-config.php dosyasına şu satır eklenebilir:
define( 'WP_POST_REVISIONS', 5 );
Aynı sabit zaten tanımlanmışsa mevcut değeri düzenleyin. Satır, WordPress yüklenmeden önce bulunmalıdır; genellikle dosyadaki “düzenlemeyi burada bırakın” açıklamasının üstüne yerleştirilir.
Bu ayarı eklemek, mevcut bütün eski revizyonları anında temizlemez. Eski birikim için ayrıca kontrollü bakım gerekir.
Temizlikten önce editörlerin hangi geçmişe ihtiyaç duyduğunu belirleyin. Doğrudan SQL ile kayıt silmek yerine WordPress’in veri ilişkilerini dikkate alan bir araç veya yöntem kullanın.

Çöp, Spam ve Eklenti Verilerini İnceleyin​

Veritabanı bakımında şu grupları ayrı değerlendirin:
Veri grubuUygun yaklaşım
Spam yorumlarListeyi kontrol edip temizlemek
Çöp kutusundaki içerikGeri yükleme ihtiyacını değerlendirmek
Eklenti günlükleriEklentinin saklama süresini ayarlamak
Eski görev kayıtlarıİlgili eklentinin bakım aracını kullanmak
Kullanılmayan tablolarSahibini ve bağımlılıklarını doğrulamak

Bir eklentinin kaldırılması, bıraktığı her verinin işe yaramaz olduğu anlamına gelmez. Yeniden kullanım, başka bir entegrasyon veya ortak bir bileşen söz konusu olabilir.
Özellikle görev tablolarında bekleyen işlemler ile tamamlanmış işlem geçmişini karıştırmayın. Bekleyen bir görevi silmek, zamanlanmış işlemin yapılmasını engelleyebilir.

OPTIMIZE TABLE Ne İşe Yarar?​

OPTIMIZE TABLE, tablo ve indekslerin fiziksel düzenini yeniden oluşturabilir. Büyük miktarda veri silindikten sonra alan kazanmak veya belirli depolama sorunlarını azaltmak için yararlı olabilir.
InnoDB tablolarında işlem genellikle tabloyu yeniden oluşturma ve istatistikleri güncelleme biçiminde yürür. Çıktıda şu mesaj görülebilir:
Table does not support optimize, doing recreate + analyze instead
Bu mesajın ardından başarılı sonuç gelebilir. Ancak bütün hata ve uyarıları normal kabul etmeyin; nihai durumu kontrol edin.
Belirli bir tablo için örnek:
OPTIMIZE TABLE wp_options;
WP-CLI ile veritabanında daha geniş kapsamlı işlem:
wp db optimize
Bu komut MySQL’in bakım aracını kullanır; gereksiz içerikleri veya revizyonları seçerek silmez.
Büyük tablolarda işlem disk ve I/O tüketebilir, kilit beklemelerine yol açabilir. InnoDB’de boş alanın bir kısmı sonraki işlemlerde yeniden kullanılabilir; görünen her “overhead” değeri acil müdahale gerektirmez.
Bu nedenle bütün tabloları her ay otomatik optimize etmek yerine, gereksinimi doğrulayın ve işlemi uygun bakım saatinde yapın.

Asıl Sorun Yavaş Sorguysa Temizlik Yetmez​

Bir eklenti aynı sayfada yüzlerce sorgu çalıştırıyorsa veya büyük bir tabloyu verimsiz tarıyorsa, revizyon temizliği sınırlı fayda sağlayabilir.
Query Monitor; sorgu sürelerini, tekrar eden sorguları ve bunların ilişkili olduğu bileşenleri incelemek için kullanılabilir.
Daha ayrıntılı incelemede:
  • Yavaş sorgu günlüklerini kontrol edin.
  • Sorgunun hangi ekran veya işlemde oluştuğunu belirleyin.
  • EXPLAIN ile yürütme planını inceleyin.
  • Uygun indeks veya sorgu değişikliğini test edin.
  • Sonucu aynı koşullarda tekrar ölçün.
İndeks eklemek her sorguyu hızlandırmaz. İndeksler ek depolama kullanır ve yazma işlemlerine maliyet getirir. Başka bir sitenin indeks önerisini kendi veritabanınıza doğrudan uygulamayın.

Redis ve Sayfa Önbelleği Nerede Devreye Girer?​

Kalıcı nesne önbelleği, WordPress’in uygun veri ve nesneleri istekler arasında yeniden kullanmasını sağlayabilir. Ancak Redis’in kurulmuş olması, bütün SQL sorgularının sonuçlarının kendiliğinden önbelleğe alındığı anlamına gelmez.
WordPress tarafında çalışan entegrasyon ve uygulamanın önbelleği kullanma biçimi önemlidir.
Sayfa önbelleği ise uygun ziyaretçilere önceden üretilmiş yanıt sunarak PHP ve veritabanı işini azaltabilir. Üye alanı, sepet ve ödeme sayfaları gibi kişiselleştirilmiş bölümler farklı kurallar gerektirir.
Sunucu tarafında da innodb_buffer_pool_size gibi ayarlar önemlidir. Aynı sunucuda PHP, web sunucusu ve e-posta hizmetleri çalışıyorsa RAM’in sabit bir yüzdesini veritabanına ayırmak yerine toplam bellek ihtiyacını değerlendirin.

Bakım Sıklığını Sitenin İhtiyacına Göre Belirleyin​

Her site için aynı bakım takvimi uygun değildir. Az güncellenen bir tanıtım sitesiyle yoğun sipariş alan bir mağazanın ihtiyaçları farklıdır.
İşlemNe zaman yapılmalı?
YedeklemeKabul edilebilir veri kaybı süresine göre
Çöp ve günlük temizliğiSaklama politikası ve büyüme hızına göre
Autoload incelemesiUyarı, performans sorunu veya büyük eklenti değişikliği sonrası
Yavaş sorgu analiziYavaşlayan ekran veya artan kaynak kullanımı görüldüğünde
Tablo optimizasyonuÖlçüm ve bakım ihtiyacı doğrulandığında

Bakım sonrası ana sayfa, yönetici paneli, arama, form ve varsa sipariş akışını test edin. Veritabanının küçülmesiyle sorgu sürelerinin kısalmasını ayrı sonuçlar olarak değerlendirin.

Sıkça Sorulan Sorular​

Veritabanını küçültmek siteyi kesin hızlandırır mı?​

Hayır. Darboğaz büyük autoload verisi veya verimsiz sorguysa iyileşme olabilir. Sorun başka bir yerdeyse boyutun azalması belirgin hız kazancı sağlamayabilir.

Autoload uyarısını kaldırmak için bütün kayıtları kapatmalı mıyım?​

Hayır. Önce büyük kayıtların görevini belirleyin. Gerekli ayarların yüklenme biçimini topluca değiştirmek, sorunu başka sorgulara taşıyabilir.

Eklenti kullanmadan bakım yapılabilir mi?​

Evet. WP-CLI, phpMyAdmin ve WordPress’in kendi araçları kullanılabilir. Önemli olan aracın adı değil, hangi veriyi ve hangi kapsamda değiştirdiğidir.

Optimizasyon içerik kaybına neden olur mu?​

Seçilen işlem veri siliyorsa olabilir. Revizyon, çöp veya günlük temizliği ile fiziksel tablo optimizasyonu farklı işlemlerdir. Temizleme seçeneklerini tek tek inceleyin.

Paylaşımlı hostingte sunucu ayarlarını değiştirebilir miyim?​

Genellikle veritabanı sunucusunun genel ayarlarını sağlayıcı yönetir. Kendi uygulamanızın sorgularını, verilerini ve desteklenen önbellek seçeneklerini düzenleyebilir; sunucu darboğazları için sağlayıcıdan inceleme isteyebilirsiniz.
 

Benzer Konular

3 konu
Geri
Üst