Buyukweb
WordPress Veritabanı Optimizasyonu: MySQL Temizliği

WordPress Veritabanı Optimizasyonu: MySQL Temizliği

Şişmiş WordPress veritabanınızı nasıl temizler ve optimize edersiniz? Revizyon silme, spam yorum temizliği, transient temizliği, tablo optimizasyonu ve performans izleme rehberi.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü12 dakika okuma

WordPress Veritabanı Optimizasyonu: MySQL Temizliği

WordPress, her yazı, yorum, eklenti ayarı ve kullanıcı eylemi için veritabanına kayıt oluşturur. Zaman içinde bu veriler birikir ve veritabanı şişmeye başlar. Optimize edilmemiş bir veritabanı, sayfa yükleme sürelerini %30-50 oranında artırabilir. Bu rehberde WordPress veritabanınızı nasıl temizleyeceğinizi ve optimize edeceğinizi öğreneceksiniz.

WordPress Veritabanı Yapısı

WordPress varsayılan olarak şu tabloları kullanır:

wp_posts        - Yazılar, sayfalar, medya
wp_postmeta     - Yazı meta verileri
wp_options      - Site ayarları
wp_usermeta     - Kullanıcı meta verileri
wp_comments     - Yorumlar
wp_commentmeta  - Yorum meta verileri
wp_terms        - Kategoriler, etiketler
wp_termmeta     - Terim meta verileri
wp_term_relationships - İçerik-kategori ilişkileri
wp_term_taxonomy - Taksonomi verileri

Veritabanını Şişiren Başlıca Nedenler

1. Yazı Revizyonları

WordPress, her kaydetmede yazının bir kopyasını saklar. 50 revizyonu olan bir yazı, aynı içeriğin 50 kopyasını veritabanında barındırır.

// wp-config.php - Revizyon sayısını sınırlayın
define('WP_POST_REVISIONS', 3); // Maksimum 3 revizyon sakla
// veya
define('WP_POST_REVISIONS', false); // Revizyonları tamamen kapat

2. Otomatik Taslaklar

WordPress, yazı yazarken otomatik taslak kaydeder. Bu taslaklar silinmez ve birikir.

3. Spam ve Onaysız Yorumlar

Binlerce spam yorum veritabanını hızla şişirir.

4. Geçici Veriler (Transients)

Eklentiler geçici verileri wp_options tablosuna kaydeder. Süresi dolan transients otomatik temizlenmeyebilir.

5. Orphan Meta Veriler

Silinen yazı, kullanıcı veya yorum kayıtları silinse de ilgili meta verileri tablolarda kalabilir.

WP-Optimize ile Otomatik Temizlik

WP-Optimize, en popüler veritabanı optimizasyon eklentisidir.

Eklentiler > Yeni Ekle > "WP-Optimize" ara ve kur

WP-Optimize ile Temizlenebilecekler

  • Yazı revizyonları
  • Otomatik taslaklar
  • Çöp kutusundaki içerikler
  • Spam yorumlar
  • Onaysız yorumlar
  • Süresi dolan transients
  • Orphan post meta
  • Orphan comment meta
  • Orphan user meta

Zamanlanmış Temizlik

WP-Optimize > Ayarlar > Zamanlama

Haftalık veya aylık otomatik temizlik planı oluşturun.

cPanel Hosting paketlerimizde phpMyAdmin aracılığıyla MySQL tablolarına doğrudan erişebilirsiniz.

Manuel SQL ile Temizlik

Daha fazla kontrol isteyenler için SQL sorguları:

Revizyonları Temizle

-- Tüm revizyonları sil
DELETE FROM wp_posts WHERE post_type = 'revision';

-- İlişkili meta verileri de sil
DELETE FROM wp_postmeta WHERE post_id NOT IN (
  SELECT ID FROM wp_posts
);

Otomatik Taslakları Temizle

DELETE FROM wp_posts
WHERE post_status = 'auto-draft'
AND post_type = 'post';

Spam Yorumları Temizle

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (
  SELECT comment_ID FROM wp_comments
);

Süresi Dolan Transients

DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
AND option_name LIKE '%_timeout_%'
AND option_value < UNIX_TIMESTAMP();

DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
AND LEFT(option_name, 11) = '_transient_'
AND CONCAT('_transient_timeout_', SUBSTRING(option_name, 12)) NOT IN (
  SELECT option_name FROM (SELECT * FROM wp_options) AS opts
);

Orphan Postmeta Temizliği

DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;

MySQL Tablo Optimizasyonu

Silme işlemleri sonrasında tablolarda boşluklar oluşur. OPTIMIZE komutu bu boşlukları giderir.

-- Tüm tabloları optimize edin
OPTIMIZE TABLE wp_posts;
OPTIMIZE TABLE wp_postmeta;
OPTIMIZE TABLE wp_options;
OPTIMIZE TABLE wp_comments;
OPTIMIZE TABLE wp_commentmeta;

phpMyAdmin ile Optimizasyon

  1. phpMyAdmin'e giriş yapın
  2. WordPress veritabanını seçin
  3. "Tümünü Seç" ile tüm tabloları işaretleyin
  4. "Seçilenleri: Optimize Et" seçeneğini tıklayın

wp_options Tablosu Büyümesi

wp_options tablosu zamanla en büyük sorun kaynağına dönüşebilir.

-- En büyük option_value kayıtlarını listele
SELECT option_name, LENGTH(option_value) as boyut
FROM wp_options
ORDER BY boyut DESC
LIMIT 20;

Autoload Sorunları

Autoload edilmiş çok sayıda seçenek, her sayfa yüklemesinde gereksiz veri çekmeye neden olur.

-- Autoload edilen verilerin boyutunu kontrol edin
SELECT SUM(LENGTH(option_value)) as toplam_boyut
FROM wp_options
WHERE autoload = 'yes';

-- Gereksiz autoload verilerini devre dışı bırakın
UPDATE wp_options SET autoload = 'no'
WHERE option_name = 'gereksiz_eklenti_verisi';

Performans İzleme

Query Monitor Eklentisi

Yavaş veritabanı sorgularını tespit etmek için Query Monitor eklentisini kullanın.

Eklentiler > Yeni Ekle > "Query Monitor" ara

Bu eklenti hangi sorgunun ne kadar sürdüğünü gösterir.

MySQL Slow Query Log

# my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1

Düzenli Bakım Planı

Görev Sıklık
Revizyonları temizle Haftalık
Spam yorumları sil Haftalık
Tablo optimizasyonu Aylık
Transients temizliği Aylık
Tam veritabanı yedeği Günlük

Büyüyen WordPress siteleri için E5V4 VDS sunucularımızda MySQL'e ayrılmış RAM ve NVMe SSD depolama ile veritabanı performansını maksimuma taşıyın.

Veritabanı Yedekleme

Temizlik ve optimizasyon öncesinde her zaman yedek alın.

# WP-CLI ile yedek
wp db export backup.sql

# mysqldump ile yedek
mysqldump -u kullanici -p veritabani_adi > backup.sql

# Sıkıştırılmış yedek
mysqldump -u kullanici -p veritabani_adi | gzip > backup.sql.gz

Plesk Hosting paketlerimizde veritabanı yedekleme araçları panele entegre olarak sunulur.

Sonuç

Düzenli veritabanı bakımı, WordPress sitenizin performansını önemli ölçüde artırır. Aylık bir temizlik rutini oluşturarak veritabanı şişmesini önleyebilir, sorgu sürelerini kısaltabilir ve ziyaretçilerinize daha hızlı sayfa yükleme deneyimi sunabilirsiniz. Otomatik araçlar bu süreci kolaylaştırsa da kritik işlemler öncesinde her zaman yedek almayı unutmayın.

Not: Büyükweb'in LiteSpeed tabanlı hosting altyapısı, WordPress siteniz için en iyi performansı sunar. Hosting planlarımızı inceleyin.


Ilgili Büyükweb Hizmetleri:

  • [Yüksek performansli VDS üzerinde WordPress](MASK57)
  • [Plesk hosting ile WordPress yönetimi](MASK58)
  • [Tüm hosting ve sunucu paketlerimiz](MASK59)

WordPress Performans ve Güvenlik

Eklenti Yönetimi

Sadece gerekli eklentileri kurun, 15-20 ile sınırlayin. Güvenlik: Wordfence, onbellek: LiteSpeed Cache, SEO: Rank Math oneriyoruz.

Tema Optimizasyonu

Hafif temalar: GeneratePress, Astra, Kadence. Kullanılmayan CSS/JS kaldirin. Kritik CSS inline ekleyin.

Veritabani Bakimi

Revisions, spam yorumlar, transient temizleyin. WP-Optimize ile otomatiklestirin. Autoload optimize edin.

Güvenlik

wp-login.php değiştirin veya IP kişitlayin. xmlrpc.php devre disi birakin. wp-config.php ust dizine taşıyin. Güvenlik anahtarlarini değiştirin.

CDN

Cloudflare ile DNS, CDN ve DDoS korumasi bir arada. BunnyCDN veya KeyCDN alternatifleri.

WooCommerce

Ürün görselleri optimize edin. Fragment cache, AJAX cart kullanin. Gereksiz scriptleri devre disi birakin.

Sik Sorulan Sorular

En uygun hosting?

LiteSpeed + NVMe + PHP 8.x + CloudLinux ideal. Büyükweb cPanel paketleri bu altyapıyi sunar.

Hacklendi ne yapmaliyim?

Bakim modu, parola değiştir, malware tara, temiz yedekten yukle, güncelle.

Sonuc

WordPress dogru optimize edildiginde profesyonel ve hızlı bir platformdur. Hosting, eklenti ve güvenlik ile sitenizi ust seviyeye taşıyin.

WordPress Eklenti Önerileri 2025-2026

Performans

  • LiteSpeed Cache: LiteSpeed sunucularda en iyi onbellek
  • ShortPixel: Otomatik resim optimizasyonu ve WebP
  • Asset CleanUp: Gereksiz CSS/JS devre disi birakma

Güvenlik

  • Wordfence: WAF, malware tarama, brute-force koruma
  • Two Factor Auth: 2FA ile giris güvenligi
  • UpdraftPlus: Otomatik yedekleme

SEO

  • Rank Math: Gelişmis SEO, schema, ücretsiz
  • Site Kit by Google: Search Console ve Analytics entegrasyonu

WordPress Hiz Testi

LiteSpeed Cache vs WP Super Cache vs W3 Total Cache

  • Sayfa yuklenme: LiteSpeed Cache %40 daha hızlı
  • TTFB: LiteSpeed Cache < 200ms, diğerleri 400-600ms
  • Bellek kullanımi: LiteSpeed Cache en düşük
  • CDN, resim optimizasyon ve veritabani optimizasyonu dahil

Büyükweb paketlerinde LiteSpeed + LSCache standart olarak sunulmaktadir.

InnoDB Engine Yapılandırması

WordPress 5.5+ default tablo engine'i InnoDB (eski MyISAM yerine). InnoDB tuning veritabanı performansının %50+'sini etkiler:

# /etc/mysql/mariadb.conf.d/50-server.cnf veya my.cnf
[mysqld]
innodb_buffer_pool_size = 1G       # RAM'in %50-70'i (4 GB sunucu için 2-3 GB)
innodb_buffer_pool_instances = 4   # CPU core sayısına göre
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2  # 1 = ACID; 2 = performans odaklı
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000          # NVMe için yüksek
innodb_io_capacity_max = 4000
innodb_read_io_threads = 8
innodb_write_io_threads = 8

Bu ayarlar VDS'in (4-8 GB RAM) WordPress için %30-40 hız iyileştirmesi sağlar.

Buffer Pool Hit Ratio Doğrulama

SHOW STATUS LIKE 'Innodb_buffer_pool%';

-- Hit ratio formülü:
-- (Innodb_buffer_pool_read_requests / (Innodb_buffer_pool_read_requests + Innodb_buffer_pool_reads)) × 100
-- > %99 ideal

Hit ratio %95'in altında ise innodb_buffer_pool_size'i artırın.

WordPress Spesifik Tablo Optimizasyonu

wp_options Bloat

Otomatik yüklenen autoload="yes" opsiyonları her sayfa yüklenmesinde sorgulanır. Plugin'ler buraya megabyte'larca veri bırakır:

-- En büyük autoload kayıtları
SELECT option_name, ROUND(LENGTH(option_value)/1024) AS size_kb, autoload
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size_kb DESC
LIMIT 20;

5 KB'dan büyük autoload kayıtları disable edin (eğer plugin tarafından kullanılmıyorsa):

UPDATE wp_options SET autoload = 'no'
WHERE option_name IN ('rt_cache_data', 'wpseo_taxonomy_meta', '_transient_orders');

Transient Cleanup

WordPress'in geçici cache'i wp_options tablosunu doldurur:

-- Süresi dolmuş transient'ları sil
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%';
DELETE FROM wp_options WHERE option_name LIKE '_site_transient_%' AND option_name NOT LIKE '_site_transient_timeout_%';
DELETE FROM wp_options WHERE option_name LIKE '_site_transient_timeout_%';

Ya da WP-Optimize plugin'inde Clean transient options toggle.

wp_postmeta Bloat

wp_postmeta zamanla yüz binlerce satıra ulaşır. Index check:

SHOW INDEX FROM wp_postmeta;

-- Eklenmesi gereken index (default'ta yok)
ALTER TABLE wp_postmeta ADD INDEX meta_key_value (meta_key(191), meta_value(191));

Bu index "meta_query" kullanan plugin'leri (WooCommerce, ACF) 10x hızlandırır.

Spam Comments

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

Post Revisions

Her güncellemede WordPress eski sürümü saklar:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
DELETE FROM wp_posts WHERE post_type = 'revision';

wp-config.php'de revision sayısını sınırla:

define('WP_POST_REVISIONS', 5);  // Son 5 revision tut

Auto-Drafts

DELETE FROM wp_posts WHERE post_status = 'auto-draft';

Query Optimizasyonu

Slow Query Log

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1     # 1 sn üstü query'ler
log_queries_not_using_indexes = 1

Log analiz:

mysqldumpslow -s t -t 20 /var/log/mysql/slow.log

En yavaş 20 query'yi gösterir.

EXPLAIN ile Query Analizi

EXPLAIN SELECT * FROM wp_posts WHERE post_status = 'publish' AND post_type = 'post' ORDER BY post_date DESC LIMIT 10;

type kolonu ALL ise full table scan; ref veya range ise index kullanıyor.

WooCommerce Spesifik Index

-- wc_orders için
ALTER TABLE wp_wc_orders ADD INDEX status_date (status, date_created_gmt);

-- wc_order_stats
ALTER TABLE wp_wc_order_stats ADD INDEX status_date (status, date_created);

WooCommerce 8.x sonrası HPOS (High-Performance Order Storage) ile bu indeksler default; eski sürümlerde manuel.

Persistent Object Cache (Redis)

In-memory cache veritabanı sorgularını on-line azaltır:

Redis Kurulum

sudo apt install redis-server php-redis
sudo systemctl enable --now redis

WordPress Plugin

Redis Object Cache plugin → aktive → Enable Object Cache butonu.

wp-config.php:

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_CACHE_KEY_SALT', 'mysite_');  // Aynı Redis'te birden fazla site

Etki

Object cache yokken: ~100 query/page, ~150 ms response
Redis cache aktifken: ~5-10 query/page, ~30 ms response

3-5x hız artışı tipik.

Veritabanı Yedekleme Stratejisi

Otomatik Mysqldump

#!/bin/bash
# /usr/local/bin/wp-db-backup.sh
DATE=$(date +%F-%H%M)
DB="wordpress"
mysqldump --single-transaction --routines --triggers $DB | gzip > /backup/db-$DB-$DATE.sql.gz

# 30 günden eski sil
find /backup -name "db-$DB-*.sql.gz" -mtime +30 -delete

Cron: 0 3 * * * /usr/local/bin/wp-db-backup.sh

Restic ile Offsite

Daha kapsamlı: Restic + Backblaze B2 backup.

Monitoring

MySQLTuner

sudo apt install mysqltuner
sudo mysqltuner

VDS'in MySQL config'ine özel öneriler verir; her ayarın "neden" gerekli olduğunu açıklar.

Query Monitor Plugin

WordPress admin → Query Monitor plugin → her sayfa yüklemesinde:

  • Toplam query sayısı
  • En yavaş query
  • DB connection sayısı
  • Cache hit ratio

Production'da yalnızca logged-in admin için aktif.

Performans Karşılaştırma (Tipik Sayılar)

Optimizasyon Sayfa Yüklenme Query Sayısı
Hiçbir optimizasyon 800 ms 80-120
Spam/revision temizliği 700 ms 80-120
InnoDB tuning 500 ms 80-120
+ Object cache (Redis) 200 ms 5-15
+ Page cache (LSCache) 50 ms 0 (cached)

Veritabanı Migration ve Sürdürülebilirlik

MariaDB 10.6+ Upgrade

Eski MySQL/MariaDB sürümlerinde performans dramatik daha düşük. Büyükweb cPanel hosting MariaDB 10.6+ sunar; VDS müşterileri kendi sunucularında upgrade etmeli:

# Backup önce
sudo mysqldump --all-databases | gzip > all-db-$(date +%F).sql.gz

# Repo + upgrade
sudo apt install software-properties-common dirmngr
sudo curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="10.11"
sudo apt update
sudo apt install mariadb-server
sudo mysql_upgrade

MySQL 8.0 vs MariaDB 10.x

Kriter MySQL 8 MariaDB 10.6+
WordPress uyum
JSON functions
Window functions
Performance İyi Genelde biraz daha hızlı
Hosting yaygın Çok Çok

WordPress için MariaDB default tercih çoğu hosting'de.

Genişletilmiş FAQ

Veritabanı boyutu çok büyüdü, ne yapmalıyım?

  1. WP-Optimize ile spam/revision/transient temizle
  2. wp_options autoload bloat çek
  3. Plugin tablolarını audit (rev slider, contact form 7 logs)
  4. Eğer hâlâ büyük: arşiv tablo stratejisi (30+ gün önceki order'ları wp_postmeta'dan ayrı tabloya taşı)

Object cache aktif ama hız aynı, neden?

  • Cache plugin doğru kuruldu mu? (Object Cache "active" mi?)
  • Redis bağlantısı çalışıyor mu? redis-cli ping → PONG
  • Plugin'iniz cache'le uyumlu mu? Bazı plugin'ler cache bypass eder

MyISAM'dan InnoDB'ye geçiş güvenli mi?

Evet — yıllarca önce default oldu. Tabloları toplu çevir:

ALTER TABLE wp_posts ENGINE=InnoDB;
-- Tüm tablolar için script ile

WooCommerce için özel öneriler?

  1. HPOS aktive et (WooCommerce 8.0+)
  2. Action Scheduler logs temizle aylık
  3. wc_admin_notes table'ı kontrol (büyür)
  4. woocommerce_session_* cache aktive

Persistent Object Cache shared hosting'de mümkün mü?

Büyükweb cPanel hosting altyapısında Memcached mevcut; Redis genelde paylaşımlıda yok. Performans ihtiyaçı yüksekse VDS'e geçmek gerek.

MySQL Query Cache açmalı mıyım?

Hayır — MySQL 8'de tamamen kaldırıldı; MariaDB'de var ama global mutex performans düşürür. Yerine Object Cache (Redis) + Page Cache kombinasyonu.

Multisite (WP Network) için farklılık?

Network'te ortak wp_users, wp_usermeta, wp_blogs tabloları paylaşılır; per-site wp_2_options, wp_2_posts ayrı. Index optimizasyonu ortak tablolarda kritiktir.

İlgili Rehberler

İlgili Büyükweb Hizmetleri

WordPress sitenizi hızlandırmak ve güvende tutmak için Türkiye lokasyonlu WordPress hosting paketlerimiz:

Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.

WordPress Rehberi İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#wordpress#mysql#optimizasyon#web geliştirme#cms

Bu yazıyı paylaş