Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2008 Forums
 Other SQL Server 2008 Topics
 Server Memory

Author  Topic 

DigitHeads
Starting Member

1 Post

Posted - 2010-05-27 : 12:36:09
Our company recently upgraded our server from 32bit 2003 enterprise running SQL server 2005 Standard to 64bit Server 2008 R2 Enterprise and SQL server 2008 Standard. now we seem to have developed a memory issue. we have 20Gb of memory in the server and as the day progresses you can watch the SQL server process (SQLserver.exe) gobble up more and more, to the point where only 2Gb of memory are left and my users start complaining that the system is running slow. it doesnt seem to stop the more memory we give it them more it gobbles up. WHY ? within 3 days after reboot, all my available memory is gone, i have to reboot the server. i rebooted it 5 minutes ago and it has already climbed from 1Gb to 4Gb and it is still going up. PLEASE HELP !!

Bill Daniels
Network Administrator

tkizer
Almighty SQL Goddess

38200 Posts

Posted - 2010-05-27 : 15:33:36
Is the SQL Server on a dedicate machine? If it is, then this is normal and would not cause your system to become slow. SQL Server is designed to be a memory hog.

What do you have running on the database server besides SQL Server?

Tara Kizer
Microsoft MVP for Windows Server System - SQL Server
http://weblogs.sqlteam.com/tarad/

Subscribe to my blog
Go to Top of Page

robvolk
Most Valuable Yak

15732 Posts

Posted - 2010-05-27 : 16:49:12
There is a bug feature in 64 bit SQL Server where the available memory is evenly divided between data and procedure cache, minus some reserved structures. Under 32 bit this was only true of the first 4 GB of memory; AWE memory above 4 GB was only used for data.

It is likely that your procedure cache is filling with ad-hoc execution plans that are not being purged, and therefore there is less memory available for data. You can check this by running DBCC PROCCACHE (NOT FREEPROCCACHE) and looking at the "num proc buffs" column. Multiply that number by 8192 and you'll get the number of bytes used by the procedure cache.

There are dynamic management views that will also report memory usage but I'm not familiar enough with them. I believe there is a DBCC command in 2008 R2 that can flush the ad-hoc cache only and preserve the procedure cache. Otherwise you may want to use DBCC FREEPROCCACHE to clear those buffers and see if performance improves.
Go to Top of Page
   

- Advertisement -