sql >> Database >  >> RDS >> Sqlserver

SQL Server geeft geen geheugen vrij nadat de query is uitgevoerd

SQL Server is inderdaad ontworpen om zoveel mogelijk RAM aan te vragen dat niet zal worden vrijgegeven tenzij dit geheugen expliciet wordt vereist door het besturingssysteem. Ik denk dat de beste aanpak is om de hoeveelheid RAM die de server kan gebruiken te beperken, waardoor het besturingssysteem een ​​bepaalde hoeveelheid bronnen heeft om hoe dan ook te gebruiken. Om dit in te stellen Hoe u geheugenopties configureert met SQL Server Management Studio :

Je kunt het ook in T-SQL doen met de volgende commando's (voorbeeld):

exec sp_configure 'max server memory', 1024
reconfigure

Om het verbruik te beperken tot 1GB.

Opmerking:het bovenstaande zal niet alle aspecten van SQL Server beperken tot die hoeveelheid geheugen. Dit regelt alleen de bufferpool en de cache van het uitvoeringsplan. Zaken als CLR, Full Text, het daadwerkelijke geheugen dat wordt gebruikt door de SQL Server .exe-bestanden, SQL Agent, uitgebreide opgeslagen procedures, enz. worden niet door deze instelling beheerd. Deze andere dingen hebben echter meestal niet zoveel geheugen nodig, het zijn de bufferpool en de cache van het uitvoeringsplan die het grootste deel van het geheugen nodig hebben.

Ik hoop dat dit helpt.



  1. Een sql-resultaat transponeren zodat één kolom naar meerdere kolommen gaat

  2. Oracle 11g krijgt alle overeenkomende voorvallen door een reguliere expressie

  3. SQL Selecteer alleen rijen met minimale waarde in een kolom met Where-voorwaarde

  4. INITCAP() – Converteren naar begincaps in PostgreSQL