Wednesday, January 19, 2011

How much memory can SQL Server 2005 x86 use when installed on Windows Server 2008 x64?

If I install SQL Server 2005 x86 on Windows Server 2008 x64 how much memory will SQL be able to use be default? How much after setting SQL server's AWE switch?

This post talks about using /3gb, /PAE, and AWE to utilize SQL Server 2008 x86 memory appropriately on Windows Server 2008 x86.

My hypothesis based on that post and related information I have seen elsewhere is that by default a SQL Server 2005 x86 instance will be able to use 4GB of memory on Windows Server 2008 x64 and if I enable AWE then SQL will be able to use as much memory as the OS's sees.

PS: Please note if your answer generalizes to other version of SQL and or Windows Server.

Thanks

  • x86 processes with the LargeAddressAware bit set (like sqlservr.exe) get a full 4 GB VAS for themselves. Enabling AWE (on OS and SQL editions that support it) allows the SQL server instance to map extra pages (up to 64GB) in and out of its VAS and use them for the buffer pool.

    That being said, x86 is a dead end and you should switch to an x64 instance ASAP.

    ObligatoryMoniker : What does enabling AWE on the OS mean? I haven't seen a way to do this and google isn't showing me any examples of enabling AWE in the context of the OS, only in the context of the SQL instance.
    Remus Rusanu : AWE is an OS concept, not a SQL one. http://msdn.microsoft.com/en-us/library/aa366527(VS.85).aspx
  • AWE is not needed for 64-bit systems; see this, SQL Server Standard or Enterprise will see whatever the operating system presents to it.

    You'll need Windows Server 2008 Enterprise edition to see more than 32GB of RAM, Standard is limited to 32GB. Refer here

    Remus Rusanu : The link reffers to the x64 SQL. An x86 SQL process running in Wow64 still needs `sp_configure 'awe enabled', 1`
    SqlACID : Right you are, I misread the question. I would have to ask why install x86 SQL on x64 OS?
    ObligatoryMoniker : See the my comment on the original question.
    From SqlACID
  • 4 GB per instance for SQL 2005 Standard/Enterprise.

    An x86 process on x64 can use a max of 2GB of RAM, or 4 GB if the application is compiled/linked with the /LARGEADDRESSAWARE switch.

    See: Memory Limits for Windows Releases:

    http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx

    http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/04/02/link-32-bit-native-c-exes-with-largeaddressaware.aspx

    From Greg Askew

0 comments:

Post a Comment