The information in this article applies to:
SUMMARYMicrosoft SQL Server allows the use of up to 2,048 MB of virtual memory. This article discusses how much memory you should allocate to SQL Server versions 4.2x, 6.0, and 6.5 in various computer memory configurations. For information about memory configuration in SQL Server version 7.0, please refer to Microsoft Books Online, included with SQL Server version 7.0. MORE INFORMATION
Windows NT provides each 32-bit Windows application a 4-gigabyte (GB)
virtual address space, the lower 2 GB of which is private per process and
available for application use. The upper 2 GB is reserved for system use.
Because Windows NT allocates additional resources for each thread spawned (for example, a 1 MB stack is allocated per thread), SQL Server should rarely be configured to use more than 1500 MB, even on systems with 2 GB or more of physical memory. Attempts to do so may cause unpredictable behavior when all memory within the process' 2 GB virtual address space have been consumed. On appropriately configured systems running SQL Server Enterprise Edition, where the available virtual address space is expanded to 3 GB, more memory can be configured for SQL Server. See the SQL Server Enterprise Edition documentation for guidelines on memory settings on these systems. The minimum amount of available memory for a SQL Server with an Intel-based processor is 16 megabytes (MB). SQL Server for RISC platforms will require more memory because of the average lower density of RISC computer instructions. However, considering the overall software, hardware, application, and personnel investment in typical client/server systems, adding more memory is usually a wise, and by comparison, inexpensive investment. Many sites report that 32 MB is a good starting point, and it is not uncommon for servers to be configured for 128 MB or more memory, which they put to beneficial use. The point at which additional memory fails to provide worthwhile benefits is entirely situation-dependent, and is determined primarily by the locality of reference of the database accesses. The important point to remember is that memory increases that are relatively small as a percentage of total memory rarely afford any significant benefit. Two things control this: SQL Server uses extra memory primarily as buffer cache; and most cache hit ratio studies indicate a fairly flat curve beyond several megabytes. For this reason, on a 32-MB computer, whether 14 MB, 16 MB, or 18 MB is given to SQL Server, it will rarely make a significant difference in SQL Server performance. Conversely, attempting to "crowd" Windows NT by giving excessive memory to SQL Server can result in poor performance because of excessive paging. The implication is that you should add physical memory to the computer in significant amounts before allocating it to SQL Server. Whether or not adding memory will be beneficial should be studied beforehand. The easiest way to determine this is by using Windows NT Performance Monitor to check the SQL Server cache hit ratio while the system is under a typical load. If the hit ratio is relatively high (over 90 percent), adding more memory usually will not be beneficial. This is because additional memory can mainly be used for additional SQL Server data cache, thereby increasing the hit ratio. In this case, the hit ratio is already high, and the maximum available improvement quite small. If the hit ratio is consistently lower than this, adding more memory may improve the hit ratio and thereby performance, if the locality of reference is such that it can be "bracketed" by economically or technically feasible amounts of memory. REFERENCESFor information about loading tempdb in RAM, please see the following article in the Microsoft Knowledge Base:Q115050 INF: When to Use Tempdb In RAM Additional query words: 4.20 sql6 sqlfaqtop perfmon machine machines
Keywords : kbenv SSrvAdmin |
Last Reviewed: October 22, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |