IN THIS CHAPTER
One of the top reasons for insufficient performance and limited scalability is memory bottlenecks. A system's being low on memory stresses both the disk and the processor. Excessive paging results in very high CPU utilization, increased queuing, and slow response times. Adding more memory to the server is one option for improving performance in such scenarios. However, there is a limit to the amount of RAM supported by servers. A server with a 32-bit processor has a limit on the directly addressable memory space of 4GB. This is because a 32-bit pointer cannot hold a memory address larger than 4GB (that is, 232). The Address Windowing Extensions (AWE) API (discussed later in this chapter) is sometimes used to enable up to 64GB of memory support on 32-bit systems. However, AWE has some limitations and overhead associated with it, which makes AWE an impractical solution for a lot of memory-intensive, performance-critical enterprise applications.
When using AWE is impractical, you can consider using a 64-bit processor-based server that has support for up to 1024GB of directly addressable memory. Theoretically, a 64-bit processor supports up to 18 billion gigabytes (that is, 264) of flat or linear memory addressability. However, the maximum memory supported by the operating system is 1024GB on Windows Server 2003 Datacenter Edition. In addition to large memory support, the 64-bit processor architecture offers additional benefits, including enhanced parallelism, increased availability, and improved bus and I/O bandwidth architecture for faster and wider throughput.
Microsoft SQL Server 2000 was one of the first Microsoft enterprise product family members to leverage the 64-bit platform and provide true scalability to customer applications. In April 2003, Microsoft announced that Windows Server 2003 (64-bit) and SQL Server 2000 (64-bit) would enable SQL Server 2000 to run on the Intel Itanium 64-bit processor. The 64-bit version of SQL Server is functionally very similar to the 32-bit product. Essentially the same code base as SQL Server 2000 (32-bit) is compiled on the 64-bit platform to leverage the key improvements of the 64-bit operating system and processor architecture. The upgrade path from SQL Server 32-bit to SQL Server 64-bit is straightforward because the on-disk structure is the same on the two platforms; you can detach and attach or back up and restore the databases from a 32-bit to a 64-bit platform.
Intel Itanium Processor Family (IPF) is based on Explicitly Parallel Instruction Computing (EPIC) technology, which has a different architecture and instruction set than 32-bit x86 processors. On the other hand, x64 processors, such as the Intel EM64T or the AMD Opteron, extend the x86 instruction set to support running both 32-bit and 64-bit applications. SQL Server 2000 Service Pack 4 (SP4), released in May 2005, enables the running of SQL Server 2000 (32-bit) on x64 processors. In other words, now you can run SQL Server 2000 on either Itanium 2 or on x64 processors.
SQL Server 2005 is the first release to natively support Itanium 2 as well as x64 processors. SQL Server 2005 addresses some of the limitations of SQL Server 2000 (64-bit) and is designed and optimized to provide superior performance on 64-bit platforms. You can run SQL Server 2005 (64-bit) on 64-bit operating system such as Windows Server 2003 (64-bit) and 64-bit hardware from vendors such as Hewlett-Packard, Unisys, IBM, Dell, and NEC, in 4-way (that is, 4 processors) to 64-way (64 CPUs) configurations. This chapter introduces concepts related to the 64-bit processor and contains details on SQL Server 2005's support for 64-bit processors.