SQL Server RAM miktarı, sürüm ve iş yüküne göre max server memory ve diğer bellek ayarlarını hesaplar. T-SQL sorguları olarak kopyalamaya hazır yapılandırma üretir.
-- Mevcut max server memory ayarı
SELECT name, value_in_use FROM sys.configurations WHERE name = 'max server memory (MB)';
-- Anlık bellek kullanımı
SELECT physical_memory_in_use_kb/1024 AS memory_mb, page_fault_count FROM sys.dm_os_process_memory;
-- Buffer pool kullanımı
SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE counter_name IN ('Total Server Memory (KB)','Target Server Memory (KB)');
SELECT physical_memory_kb/1024 AS ram_mb FROM sys.dm_os_sys_info;
Sunucunun fiziksel RAM miktarı.
Express max 1410 MB ile sınırlıdır.
OS ve diğer servisler için ne kadar RAM bırakılacağını belirler.
Max Degree of Parallelism hesabı için.
Genellikle CPU sayısı veya max 8.
SQL Server Bellek Yönetimi Rehberi
SQL Server varsayılan olarak mevcut tüm RAM’i kullanmaya çalışır. max server memory ayarlanmazsa OS ve diğer servisler için yeterli RAM kalmayabilir, bu da ciddi performans sorunlarına yol açar. En kritik yapılandırma adımı budur.
OS için Ayrılacak Minimum RAM (Microsoft Önerisi)
RAM 0–4 GB → OS için 1 GB bırak RAM 4–16 GB → OS için toplam RAM'in %10'u RAM 16–64 GB → OS için 4 GB + her 4 GB RAM için +1 GB RAM 64 GB üzeri → OS için 10 GB + her 8 GB RAM için +1 GB SSRS çalışıyorsa → +2–4 GB ekstra SSIS çalışıyorsa → +1–2 GB ekstra max server memory = Toplam RAM - OS payı - diğer servis payı
max server memory
SQL Server’ın Buffer Pool için kullanabileceği maksimum RAM miktarı. Bu değer mutlaka ayarlanmalıdır — varsayılan değer 2.147.483.647 MB’dir (sınırsız). SSRS, SSIS gibi ek bileşenler bu limitin dışında RAM kullanır.
Max Degree of Parallelism (MAXDOP)
Tek bir sorgunun kaç CPU çekirdeği kullanabileceğini belirler. OLTP için genellikle düşük (1–4), OLAP için daha yüksek tutulur. NUMA node başına çekirdek sayısını geçmemeli.
Cost Threshold for Parallelism
Sorgunun paralel çalışmaya geçmesi için gereken maliyet eşiği. Varsayılan 5 çok düşüktür — çoğu ortamda 25–50 arası daha iyi sonuç verir. Yüksek değer küçük sorguların paralel çalışmasını engeller.
Tempdb Optimizasyonu
Tempdb contentionunu azaltmak için dosya sayısı CPU çekirdek sayısına eşit tutulur (maksimum 8). Her dosya aynı boyutta ve aynı büyüme ayarlarında olmalı. SQL Server 2016+ kurulumda otomatik yapılandırılır.
| Parametre | Açıklama | Varsayılan |
|---|---|---|
| max server memory | Buffer pool için maksimum RAM. Mutlaka ayarlanmalı. | 2.147.483.647 (sınırsız) |
| min server memory | SQL Server’ın bırakmayacağı minimum RAM miktarı. | 0 |
| max degree of parallelism | Sorgu başına maksimum paralel thread sayısı. | 0 (sınırsız) |
| cost threshold for parallelism | Paralel plana geçiş için sorgu maliyet eşiği. | 5 |
| optimize for ad hoc workloads | İlk çalıştırmada plan cache’e tam plan yerine stub yazar. Bellek tasarrufu sağlar. | 0 (kapalı) |
| lightweight pooling | Fiber mode — genellikle önerilmez, kapalı kalmalı. | 0 (kapalı) |
| tempdb dosya sayısı | Contention azaltmak için. CPU sayısı veya max 8. | 1 |
-- Bellek baskısı var mı?
SELECT * FROM sys.dm_os_ring_buffers WHERE ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR';
-- Plan cache kullanımı
SELECT SUM(size_in_bytes)/1024/1024 AS cache_mb, type FROM sys.dm_exec_cached_plans GROUP BY type;
-- PLE (Page Life Expectancy) — 300 saniyenin altına düşmemeli
SELECT cntr_value AS ple FROM sys.dm_os_performance_counters WHERE counter_name = 'Page life expectancy';
max server memory ve min server memory değişiklikleri SQL Server yeniden başlatılmadan anında uygulanır. MAXDOP ve Cost Threshold da yeniden başlatma gerektirmez. Tempdb dosya değişiklikleri için servis yeniden başlatması gerekir.