Veritabanları web sayfalarının kalbidir çünkü hertürlü veri buralarda saklanır , web sayfaları ile veritabanları arasındaki bağlantıyı sağlayan şey SQL komutlarıdır , mesela bir web sayfasında
WordPress Veritabanı neden kirlenir
Bunun çeşitli sebepleri vardır wordpressin işleyiş tarzı bu tür kayıt kalıntılarına müsade eder yani wordpress Optimum bir kodlamaya sahip değildir ilaveten kurulan eklentiler ve denenip kaldırılan temalarda veritabanında kalıntı bırakırlar. Burada kirlilikten en fazla etkilenen iki tablo vardır :
1. wp_commentmeta
2. wp_postmeta
bazen bunlar Yüzlerce MB büyüklüğe ulaşabilirler ve asıl tablolar olan wp_posts ve wp_comment in boyutundan çok daha yüksek boyutlu olabilirler bunun sebebi bu tabloların çok çabuk şişmesidir , mesela Akismet doğrulamaları , silinen mesajların ve revizyonları meta verileri vs hep bu tablolarda yeralır , silinmiş birşeyin kalıntısı neden saklanır anlamak mümkün değil , lakin elbetteki ellerinden bukadarı geliyor hem bedava kulanıp hemde şikayet etmek yakışık almaz.
WordPress veritabanı Tablolarını SQL komutları ile temizleyelim
Aşağıda verilen SQL komutlarını Uygulamadan önce Mutlaka Veritabanı yedeğinizi alın , eğer bir sıkıntı olursa yedeği geri yüklersiniz (henüz bir sıkıntı çıkarmadılar) bu komutları çalıştırmak için ;
a) PhpMyadmine giriş yapıyoruz
b) Veritabanımızın ismine tıklıyoruz
c) SQL tabına geçiş yapıyoruz ve sorguları buraya Kopyala - yapıştır yapıp sağ altta bulunan "Git" butonuna tıklıyoruz
1. wp_commentmeta tablosunu çöplerden temizleyelim
Eğer wordpressinizi wordpress.org harici bir hostta kullanıyorsanız yani bir hostunuz var ve cms olarak wordpress kullanıyorsanız (ki çoğunluk öyledir diye tahmin ediyorum) spam koruması olarak Akismet aktifse ilaveten günde yüzlerce spam alıyorsanız zamanla wordpress databankında yeralan wp_commentmeta tablonuz muhtemelen garip bir şekilde aşırı şişmiştir (çoğu kişi bunun farkına dahi varmaz) kullanıcıların bildirdiğine göre bu şişkinlik rakamı 7MB - 72MB arası olabiliyor , işin kötüsü bir müddet sonra aynen şöyle hatalar başgösterir:
MySQL Gone Away error or 500 Internal Server Error
bunun kaynağı backlinklerle bombalanan spam mesajlarıdır bunlar genellikle auto spam pluginleri ile gerçekleştiriyorlar burada yapılabilecek ilk işlem wp_commentmeta tablosunun boyutunu normal hale getirmektir , elbetteki bunun için aşağıdaki komutları veriniz:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments )
eğer Akismeti spam koruması olarak kullanmayı bıraktınızssa aşağıdaki komutu da çalıştırınız
DELETE FROM wp_commentmeta WHERE meta_key LIKE "%akismet%"
Eğer sıfır satır silindi mesajı alırsanız bilinki ilgili tablonuzda çöp yoktur (Aşağıdaki resim)
2. wp_postmeta tablosunu çöplerden temizleyelim
Bunun için aşağıdaki SQL komutunu çalıştırmanız yeterlidir
DELETE wp_postmeta FROM wp_postmeta LEFT JOIN wp_posts ON (wp_postmeta.post_id = wp_posts.ID) WHERE (wp_posts.ID IS NULL)
Ardından aşağıdaki komutu vrin
DELETE FROM wp_postmeta WHERE meta_key IN ('_edit_lock','_edit_last')
3. wp_post tablosunu çöplerden temizleyelim
Sırası ile aşağıdaki komutları çalıştıralım
DELETE wp_posts FROM wp_posts LEFT JOIN wp_posts child ON (wp_posts.post_parent = child.ID) WHERE (wp_posts.post_parent <> 0) AND (child.ID IS NULL)
ve aşağıdaki kodu uygulayalım
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
Son olarak aşağıdakini çalıştıralım
DELETE FROM wp_posts WHERE post_type = 'revision' DELETE FROM wp_posts WHERE post_title = 'Auto Draft'
WordPressinizde transient isimli Çöp kayıtlar
wp_options tablosunu gözetim altında tutmalısınız deneyip daha sonra kaldırdığınız Temalar (birdefasında 40 a yakın kalıntı bırakmıştı) yada pluginler bu tablonun bir numaralı düşmanıdır , wordpress henüz bu artıkları kendisi temizleyecek gelişmişlikte değil özelliklede içerisinde aşağıdaki kayıtlar oluşan site sahiplerinde yavaşlamanın sebebi bu olabilir
_transient_timeout_feed
_transient_feed_mod
Bir makalede kullanıcının biri 5000 e yakın bu şekilde oluşmuş kaydı sildikten sonra wordpressinin normale döndüğünü yazmıştı , elbetteki bu kayıtları manuel silmek olanaksız o nedenle phpMyadminden aşağıdaki SQL komutunu çalıştırmanız işinizi büyük ölçüde kolaylaştıracaktır
DELETE FROM wp_options WHERE option_name LIKE ('_transient_%')
Ardından aşağıdakini komutu verin
DELETE FROM wp_options WHERE option_name LIKE ('_transient%_feed_%')
Eğer üsttekilerin Bazılarını bir tıkla gerçekleştiren bir plugin arıyorsanız WP-Optimize pluginini tavsiye ederim (Üstteki tüm temizlik komutlarını içermiyor) . Üstteki komutları ve işe yaraması muhtemel diğer komutları aşağıdaki linkten indirebilirsiniz
Ne hatası alıyorsunuz ?
Merhaba Arkadaşlar Komutları Yazarken Aşagıda Hata Alıyorum Sorun Neden Kaynaklanabılır Yardıımcı Olabilirmisiniz Rica Etsem
faydalı olmasına sevindim , wordpress veritabanında zamanla aşırı çöp birikiyor dikkat etmek gerek
Gerçekten çok teşekkür ederim. Beni kocaman bir yükten kurtardınız. Allah sizden razı olsun. Hayatta başarılar dilerim.
Sağlık olsun.
Yazı tamamiyle bana ait olsa elbette olurdu lakin , Teknohaberdeki bir arkadaşın da ilave kodları var , yanılmıyorsam oda yazının paylaşılmasını istemiyor O nedenle paylaşmamanı tercih ederim
Bu yazıyı sitemde kaynak gösterip paylaşabilirmiyim?
Vritabanınız büyük ölçüde rahatlayacaktır , faydalı olmasını umuyorum
Ellerinize sağlık Hocam Deneyeceğim çok Teşekkürler
sitemin açılış hızını hızlandırmak için birebir bilgiler, teşekkürler..