SQL Worker Thread Stack Sizes

Recently during some internal discussions we had a lot of talk around the stack sizes for various SQL builds. Here is the summary of that talk:


SQL Server Build OS Build Stack Size
SQL Server x86 (32-bit) x86 (32-bit) 512 KB
SQL Server x86 (32-bit) x64 (64-bit) 768 KB (see notes 1 and 2)
SQL Server x64 (64-bit) x64 (64-bit) 2048 KB
SQL Server IA64 (64-bit Itanium) IA64 (64-bit Itanium) 4096 KB (see note 3)



  1. This (wow64 stack size) is confirmed from http://www.microsoft.com/technet/prodtechnol/sql/2005/diagandcorrecterrs.mspx: SQL Server 2000 running on X64 in WOW mode also uses more memory per worker (768 KB = 512 KB for standard stack + 256 KB used by WOW to support the stack).
  2. Also check http://support.microsoft.com/kb/916950 for an issue related to SQL 2000 x86 (really this should be the only case where this configuration might be used) running in WOW64 mode on x64 OS. http://msdn.microsoft.com/en-us/library/aa384219(VS.85).aspx mentions the overhead which is required for a 32-bit process running inside WOW64.
  3. Slava Oaks blogged specifically about this http://blogs.msdn.com/slavao/archive/2005/03/19/399117.aspx

I hope this summary helps someone out there!

Comments (1)

  1. Hi Arvind,

    Thanks for sharing this. I have a doubt though. I didn’t quite understand, why do we have stack sizes as big as 2 and 4 MB.

    In general, is this is a good design idea to have such big stacks?