Blogchevron_rightSunucu Yönetimichevron_rightWeb Sitesi Veritabanı Performans İyileştirme Rehberi

Web Sitesi Veritabanı Performans İyileştirme Rehberi

S
Serversium
calendar_today29 Mayıs 2026
schedule5 dk okuma
Web Sitesi Veritabanı Performans İyileştirme Rehberi

Web Siteniz İçin Gelişmiş Veritabanı Performans İyileştirmeleri

Veritabanı performansı, modern web sitelerinin hızı ve kullanıcı deneyimi için kritik bir faktördür. Yavaş veritabanı sorguları, kullanıcıların sitenizi terk etmesine, arama motoru sıralamalarınızın düşmesine ve dönüşüm oranlarınızın azalmasına neden olabilir. Bu kapsamlı rehberde, web sitenizin veritabanı performansını optimize etmek için kullanabileceğiniz gelişmiş teknikleri inceleyeceğiz.

Araştırmalara göre, kullanıcıların %53'ü yüklenme süresi 3 saniyeyi aşan siteleri terk ediyor. Bu istatistik, veritabanı optimizasyonunun ne kadar kritik olduğunu açıkça gösteriyor.

Veritabanı Performansını İzleme ve Ölçme

Performans iyileştirmelerine başlamadan önce, mevcut durumu doğru bir şekilde ölçmek çok önemlidir. İyi bir izleme sistemi kurarak darboğazları tespit edebilir ve iyileştirmelerin etkisini ölçebilirsiniz.

Temel Metrikler ve KPI'lar

Veritabanı performansını değerlendirirken şu metrikleri takip etmelisiniz:

  • Sorgu Yanıt Süresi: Sorguların milisaniye cinsinden ne kadar hızlı çalıştığı
  • CPU Kullanımı: Veritabanı sunucusunun işlemci yükü
  • Disk I/O: Okuma/yazma işlemlerinin hızı
  • Bağlantı Sayısı: Eşzamanlı veritabanı bağlantıları
  • Önbellek Hit Oranı: Önbellekteki verilerin kullanım oranı

İzleme Araçları ve Yöntemleri

MySQL için MySQL Enterprise Monitor, PostgreSQL için pgAdmin veya InnoDB yapılandırma rehberi ile kapsamlı izleme yapabilirsiniz. Bu araçlar, sorgu planlarını analiz etmenize ve yavaş sorguları tespit etmenize olanak tanır.

Sorgu Optimizasyonu Teknikleri

Veritabanı performansının en kritik bileşenlerinden biri sorgu optimizasyonudur. İyi yazılmış sorgular, performansı dramatik şekilde artırabilir.

SELECT Sorgularını İyileştirme

Her zaman yalnızca ihtiyacınız olan sütunları seçin. SELECT * kullanımından kaçının çünkü bu, gereksiz veri transferine neden olur. Bunun yerine, spesifik sütunları belirtin:

-- Kötü uygulama
SELECT * FROM users WHERE status = 'active';

-- İyi uygulama
SELECT id, username, email FROM users WHERE status = 'active';

JOIN İşlemlerini Optimize Etme

JOIN sorgularında dikkat edilmesi gereken en önemli nokta, JOIN yapılacak sütunlarda indeks olmasıdır. INNER JOIN yerine mümkün olduğunca LEFT JOIN kullanmaktan kaçının çünkü INNER JOIN genellikle daha hızlıdır.

Araştırmalara göre, kötü yazılmış JOIN sorguları veritabanı performansının %40'ını olumsuz etkileyebiliyor.

WHEREClause Optimizasyonu

WHERE koşullarında fonksiyon kullanımından kaçının. Fonksiyonlar, indekslerin kullanılmasını engelleyebilir:

-- Kötü uygulama
SELECT * FROM orders WHERE YEAR(created_at) = 2024;

-- İyi uygulama
SELECT * FROM orders WHERE created_at >= '2024-01-01' AND created_at < '2025-01-01';

İndeksleme Stratejileri

İndeksler, veritabanı sorgularının hızını artırmanın en etkili yollarından biridir. Doğru indeks stratejisi, sorgu sürelerini %90'a kadar kısaltabilir.

B-Tree İndeksleri

B-Tree indeksleri, en yaygın kullanılan indeks türüdür ve çoğu sorgu tipi için idealdir. Eşitlik sorguları (WHERE column = value) ve aralık sorguları için mükemmel performans sağlar.

Kompozit İndeksler

Birden fazla sütunu içeren kompozit indeksler oluştururken, sütun sırası çok önemlidir. En selektif sütun en başta olmalıdır:

CREATE INDEX idx_user_status_date ON users(status, created_at);

İndeks Kullanımı için İpuçları

  • Sıklıkla sorgulanan sütunlarda indeks oluşturun
  • Kartezyen JOIN'lerden kaçının
  • LOW CARDINALITY sütunlarda indeks kullanmaktan kaçının
  • İndeksleri düzenli olarak bakıma tabi tutun
  • EXPLAIN komutu ile sorgu planlarını analiz edin

Önbellekleme Mekanizmaları

Önbellekleme, veritabanı yükünü önemli ölçüde azaltır ve sorgu yanıt sürelerini milisaniyelerle ölçülebilir şekilde iyileştirir.

Query Cache (Sorgu Önbelleği)

MySQL 8.0'dan önce kullanılan Query Cache, tekrarlayan sorguların sonuçlarını saklayarak performansı artırıyordu. Ancak MySQL 8.0'da kaldırıldı ve yerine daha modern çözümler öneriliyor.

Redis ve Memcached Entegrasyonu

Redis, yüksek performanslı bir in-memory veri yapısı deposudur ve veritabanı önbellekleme için ideal bir çözümdür. Web sitesi hızı için Redis kullanımı, sunucu yükünü %80'e kadar azaltabilir.

Uygulama Seviyesinde Önbellekleme

Uygulama kodunuzda, sık değişmeyen verileri önbelleğe alarak veritabanı sorgu sayısını minimize edebilirsiniz. Bu yaklaşım, özellikle yapılandırma verileri ve kategori listeleri için etkilidir.

Veritabanı Sunucu Yapılandırması

Doğru sunucu yapılandırması, veritabanı performansı için temel bir faktördür. MySQL ve PostgreSQL için önerilen yapılandırma ayarlarını inceleyelim.

MySQL/InnoDB Yapılandırması

innodb_buffer_pool_size ayarı, InnoDB'nin veri ve indeksleri önbelleğe aldığı bellek alanını belirler. Bu değer, mevcut RAM'in %70-80'i olarak ayarlanmalıdır:

innodb_buffer_pool_size = 4G
innodb_log_file_size = 1G
max_connections = 200
query_cache_type = 0

InnoDB yapılandırma rehberi ile daha detaylı ayarları inceleyebilirsiniz.

PostgreSQL Yapılandırması

PostgreSQL'de shared_buffers ayarı, veritabanı önbelleği için ayrılan bellek miktarını belirler. Bu değer, sistem RAM'in %25'i olarak önerilir:

shared_buffers = 2GB
effective_cache_size = 6GB
work_mem = 64MB
maintenance_work_mem = 512MB

Karşılaştırma Tablosu: MySQL vs PostgreSQL

ÖzellikMySQLPostgreSQL
Okuma HızıÇok İyiİyi
Yazma HızıİyiÇok İyi
Karmaşık SorgularOrtaÇok İyi
ÖlçeklenebilirlikİyiÇok İyi
GenişletilebilirlikOrtaÇok İyi

Bağlantı Havuzu ve Yönetimi

Veritabanı bağlantı havuzları, her sorgu için yeni bağlantı oluşturma maliyetini ortadan kaldırarak performansı artırır.

Bağlantı Havuzu Avantajları

  • Bağlantı oluşturma maliyetini azaltır
  • Sunucu kaynaklarını verimli kullanır
  • Eşzamanlı sorgu yönetimini kolaylaştırır
  • Bağlantı timeout'larını önler

PHP için PDO Bağlantı Havuzu

PHP uygulamalarında PDO kullanarak bağlantı havuzu oluşturabilirsiniz:

$dsn = 'mysql:host=localhost;dbname=myapp;charset=utf8mb4';
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, 'username', 'password', $options);

Partitioning ve Sharding

Çok büyük veritabanları için partitioning ve sharding teknikleri, sorgu performansını önemli ölçüde artırabilir.

Table Partitioning

MySQL'de tablo bölümleme, büyük tabloları daha küçük, yönetilebilir parçalara böler:

CREATE TABLE orders (
    id INT NOT NULL,
    order_date DATE NOT NULL,
    amount DECIMAL(10,2),
    PRIMARY KEY (id, order_date)
) PARTITION BY RANGE (YEAR(order_date)) (
    PARTITION p2023 VALUES LESS THAN (2024),
    PARTITION p2024 VALUES LESS THAN (2025),
    PARTITION p2025 VALUES LESS THAN MAXVALUE
);

Horizontal Sharding

Sharding, verileri birden fazla sunucuya yayarak tek bir sunucudaki yükü azaltır. Bu yaklaşım, milyonlarca satıra sahip tablolar için özellikle etkilidir.

Sorgu Analizi ve Debugging

Düzenli sorgu analizi, performans darboğazlarını tespit etmenin en iyi yoludur.

EXPLAIN Komutu Kullanımı

MySQL'de EXPLAIN komutu ile sorgu planını analiz edebilirsiniz:

EXPLAIN SELECT u.username, o.amount 
FROM users u 
INNER JOIN orders o ON u.id = o.user_id 
WHERE u.status = 'active';

Çıktıda dikkat etmeniz gerekenler:

  • type: ALL (tam tablo taraması) kötü, index veya ref iyidir
  • key: Kullanılan indeks
  • rows: Tarama yapılan satır sayısı
  • Extra: Using filesort veya Using temporary kötü işaretlerdir

Slow Query Log

MySQL'de yavaş sorguları kaydetmek için slow_query_log ayarını etkinleştirin:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Bu ayar, 2 saniyeden uzun süren sorguları loglar.

Sonuç ve Öneriler

Veritabanı performans optimizasyonu, sürekli bir süreçtir. Uygulamanız büyüdükçe ve trafik arttıkça, bu teknikleri düzenli olarak gözden geçirmeli ve iyileştirmelisiniz.

Hızlı Başlangıç Kontrol Listesi

  1. Sık kullanılan sorgular için indeksler oluşturun
  2. EXPLAIN ile sorgu planlarını analiz edin
  3. innodb_buffer_pool_size değerini doğru ayarlayın
  4. Yavaş sorgu log'unu etkinleştirin
  5. Bağlantı havuzu kullanın
  6. Önbellekleme katmanı ekleyin
  7. Düzenli bakım yapın (ANALYZE, OPTIMIZE TABLE)
  8. Monitorinq araçları kurun

Veritabanı performansını iyileştirmek, web sitenizin genel performansını doğrudan etkiler. Dedicated sunucular ile daha yüksek performans elde edebilir ve verit

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward