
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.
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
- phpMyAdmin'e giriş yapın
- WordPress veritabanını seçin
- "Tümünü Seç" ile tüm tabloları işaretleyin
- "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?
- WP-Optimize ile spam/revision/transient temizle
wp_optionsautoload bloat çek- Plugin tablolarını audit (rev slider, contact form 7 logs)
- 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?
- HPOS aktive et (WooCommerce 8.0+)
- Action Scheduler logs temizle aylık
- wc_admin_notes table'ı kontrol (büyür)
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
- Restic + Backblaze B2 Encrypted Backup
- WordPress Hız Optimizasyonu Core Web Vitals
- MySQL Performans Optimizasyonu
- Plesk WordPress Toolkit Staging
- Redis Kurulumu Web Uygulaması Önbellekleme
İlgili Büyükweb Hizmetleri
WordPress sitenizi hızlandırmak ve güvende tutmak için Türkiye lokasyonlu WordPress hosting paketlerimiz:
- WordPress Hosting
- cPanel Web Hosting
- Genel Web Hosting
- WordPress için VDS Sunucu
- WordPress Hosting Seçim Rehberi
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:

