WordPress te databank (Veritabanı) temizligi


wordpress veritabanı temizliği

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

bir başlığa tıkladığımızda geri planda çalışan bir SQL sorgusu veritabanından ilgili bilgiyi çeker ve görüntüler elbette salisede gerçekleşen bir hadisedir ,temel işleyiş bu şekildedir gel gelelim veritabanından bilgiyi bulup görüntüleme işlemi zamanla yavaşlamaya başlayabilir bunun bir sebebi de veritabanının binlerce gereksiz bilgi ve girdi ile dolmasıdır , örneğimizde WordPress ele alınacak olmasına rağmen hangi içerik sistemini kullanırsanız kullanın zamanla veri tabanınızda farkedemediğimiz binlerce gereksiz girdi oluşabilir ve bunların temizlenmeleri sayfa açılışına serilik kazandırıp serveri rahatlatacaktır (Kapanmayan sorgu , Yüksek CPU kullanımı…)

WordPress Veritabanı neden kirlenir

veritabanlari

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

sql konutu nasıl uygulanır

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)

sıfır satır silindi

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

Download



6 Yorum Var

Yorum Ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

CAPTCHA