Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

InnoDB Buffer Pool Boyutunu Sistem RAM'inize Göre Hesaplama ve Performans için Optimize Etme Rehberi

asternix

Üye
Katılım
14 Mart 2026
Mesajlar
36
Merhaba arkadaşlar, bugün sizlere MySQL/MariaDB performansınızı kökten etkileyen, belki de en kritik ayarlardan biri olan InnoDB Buffer Pool boyutunu nasıl hesaplayacağınızı ve optimize edeceğinizi anlatacağım. Doğru ayarlanmış bir Buffer Pool, disk I/O'yu inanılmaz derecede azaltarak veritabanı hızınızı uçuşa geçirebilir. Benim sunucularda genelde ilk baktığım ve ayarladığım yer burasıdır.

📊 Buffer Pool Nedir ve Neden Bu Kadar Önemli?

Basitçe anlatmak gerekirse, InnoDB Buffer Pool, MySQL'in veri ve indeksleri diskten değil de RAM'den okumasını sağlayan bir önbellek alanıdır. Eğer sorguladığınız veri burada varsa, disk erişimi olmadan, çok hızlı bir şekilde sonuç alırsınız. Yanlış boyutlandırma ise ya RAM israfına ya da sürekli yavaş disk okumasına sebep olur.

🧮 Sistem RAM'inize Göre Boyut Nasıl Hesaplanır?

Burada altın kural, sunucunuz sadece veritabanı sunucusu ise, mevcut RAM'inizin %70-80'ini Buffer Pool için ayırmaktır. Kalan kısım işletim sistemi, diğer süreçler ve bağlantılar için kullanılır. 16 GB RAM'li bir sunucu için hızlı bir hesaplama yapalım.

SQL:
-- Mevcut Buffer Pool boyutunu kontrol etmek için:
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

Diyelim ki sunucumuzda 16 GB RAM var ve başka önemli bir servis çalışmıyor. %75'ini ayıralım:
16 GB 0.75 = 12 GB
12 GB = 12 1024 MB = 12288 MB
12288 MB = 12288 1024 KB = 12582912 KB

En doğru ayar için bu değeri bayt cinsinden girmeliyiz: 12 GB = 12884901888 bayt

⚙️ Ayarları Yapılandırma (my.cnf / my.ini)

Bu ayarı kalıcı olarak yapmak için MySQL/MariaDB konfigürasyon dosyasını (/etc/mysql/my.cnf veya /etc/my.cnf) düzenliyoruz. mysqld bölümüne aşağıdaki satırı ekliyoruz.

INI:
[mysqld]
# 12 GB için Buffer Pool boyutu
innodb_buffer_pool_size = 12G

# Performans için önerilen ek ayarlar
innodb_buffer_pool_instances = 8
innodb_buffer_pool_chunk_size = 128M

⚠️ Dikkat Edilmesi Gerekenler

1. innodb_buffer_pool_instances değeri, özellikle büyük RAM'lerde eşzamanlılık için çok önemli. Genelde her 1GB için 1 instance kuralı vardır. 12GB için 8 iyi bir başlangıç değeri.
2. innodb_buffer_pool_chunk_size innodb_buffer_pool_instances değeri, toplam innodb_buffer_pool_size değerini eşit bölmelidir. 128M 8 = 1GB, 12GB'ı tam böler.
3. Ayarları değiştirdikten sonra MySQL/MariaDB servisini mutlaka yeniden başlatın[/COLOR].
4. Eğer sunucunuzda aynı anda çok fazla sayıda bağlantı oluyorsa (örn: 1000+), RAM'in %70'inden fazlasını ayırmak diğer bağlantılar için bellek sıkıntısı yaratabilir, dikkatli olun.

📈 Optimizasyon Sonrası Performansı Kontrol Etme

Ayarlarınızı yaptıktan ve bir süre çalıştırdıktan sonra, Buffer Pool'un ne kadar verimli kullanıldığını aşağıdaki komutla kontrol edebilirsiniz.

SQL:
SHOW ENGINE INNODB STATUS\G
-- Çıktıda "BUFFER POOL AND MEMORY" başlığını arayın.
-- "Buffer pool hit rate" değerinin %99.5 ve üzeri olması idealdir.
-- Ayrıca aşağıdaki komut da faydalıdır:
SELECT (1 - ((Variable_value / (Variable_value2 + Variable_value3))))  100 AS "Hit Rate %"
FROM performance_schema.global_status
WHERE Variable_name = 'Innodb_buffer_pool_reads'
AND Variable_name2 = 'Innodb_buffer_pool_read_requests'
AND Variable_name3 = 'Innodb_buffer_pool_read_ahead';

Sonuç olarak, doğru bir InnoDB Buffer Pool ayarı, veritabanı performansınızda gece ile gündüz farkı yaratacaktır. Bu rehberde genel ve güvenli bir yaklaşımı anlattım. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı senaryolarınız veya ek önerileriniz var mı? Aşağıya yorumlarınızı bekliyorum. Sorularınız olursa çekinmeden yazın, yardımcı olmaya çalışırım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri