Perché succede
SQL Server riserva tutta la memoria disponibile per il buffer pool: è un comportamento corretto e intenzionale, progettato per massimizzare le prestazioni. Il problema non è l'utilizzo alto in sé, ma la pressione: quando il sistema operativo o altre applicazioni non riescono a ottenere memoria, si innescano swap, deallocazioni forzate e degrado delle prestazioni.
Cosa verificare
- Max server memory — deve essere impostato esplicitamente, lasciando 2–4 GB al sistema operativo. Il valore di default (2.147.483.647 MB) è una trappola comune su istanze non configurate.
- Available MBytes — se questo contatore scende sotto 200–400 MB in modo persistente, c'è vera pressione di memoria sul sistema.
- Memory Grants Pending — valori superiori a 0 indicano query in attesa di allocazione: è un segnale serio di workload sproporzionato rispetto alla RAM disponibile.
Quando è normale e quando no
Se Available MBytes è stabile e Memory Grants Pending è zero, la situazione è normale e non richiede intervento. Se invece compaiono page fault elevati, lentezze applicative intermittenti e Memory Grants Pending maggiore di zero, è necessaria un'analisi del workload e una revisione della configurazione della memoria.
