【TechTarget中国原创】多个SQL Server实例的内存设置
当处理多个实例时,决定内存设置是相当棘手的。当你只有一个实例时,你只需要简单地先确定OS需要的RAM,然后将剩下的内存设置给数据库。随着实例地增多,你必须仔细决定每个实例需要多少内存。对于数据库较小并且每秒内事务较少的SQL Server 实例,显然比有更大数据库的实例需要较少的内存资源。当作这些决定时,你一定要清楚你正在使用的是哪个SQL Server 版本,以及它是如何计算SQL Server 将使用的程序缓存总数的。在32位平台上,程序缓存必须分配在主应用的内存空间(RAM的2GB空间),即使启用了AWE。你可以在SQL Server with Mr. Denny博客上阅读更多关于程序缓存的内容。
32-bit platforms |
SQL Server 2000 | 50% of the allocated memory or 1 GB, whichever is lower |
SQL Server 2005&1t;SP2 | 50% of the allocated memory or 1 GB, whichever is lower |
SQL Server 2005>= SP2 | 50% of the allocated memory or 1 GB, whichever is lower |
64-bit platforms | |
SQL Server 2000 | 50% of the allocated memory or 1 GB, whichever is lower |
SQL Server 2005&1t;SP2 | 75% of the first 8 GB + 50% of the next 56 GB + 25% of the RAM over 64 GB |
SQL Server 2005>= SP2 | 75% of the first 4 GB + 10% of the RAM over 4 GB |
AWE内存管理
Microsoft Windows的Address Windowing Extensions API允许应用开发者在32位系统上访问超过2GB的内存。在Windows Server 2000中,AWE只能在Advanced Server和Data Center版本的操作系统上使用。在Windows Server 2003中,这三个服务器版本AWE都适用。为了使用AWE,你必须通过添加/PAE开关到你的boot.ini文件上以启用物理地址扩展。在Windows 2003 SP1中,当安装了超过2GB的RAM时,Windows将自动启动PAE。
另外一个需要添加到boot.ini文件中的开关是/3GB开关。/3GB开关使SQL Server能够访问高于3GB的RAM。
Microsoft已经撰写了一篇非常出色的标题为“如何配置SQL Server使用超过2 GB的物理内存”的KB文章。但是,有很多时候/3GB开关是不应该使用。其中就包括运行Windows 2003 Data Center版本,以及有超过16GB的RAM的系统。
当在32位系统上运行SQL Server时,除非你正在使用超过2GB的RAM,否则你不能启动AWE。因为这样做可能导致出现SQL Server性能问题。
x64/64i平台的变化
在目前的64位平台上,内存使用方面已经作了很大的改进。虽然32位平台要求你使用AWE和PAE访问超过2GB的RAM,但是64位平台没有这些限制。在64位平台上,所有内存都可用于应用,只要它们是作为64位的应用编译的;运行在Windows on Windows (WOW)的32位应用也有着与它们在32位平台上运行时的相同的内存限制。
虽然SQL Server 只是提供几个简单的内存设置,但是对它进行正确的设置是极为重要的。正确的内存设置将使SQL Server能长时间平稳地运行。内存设置必须定期检查以确保原先的设置仍然是恰当的。毕竟,去年安装的内存总量可能已经不够用或者不正确了。
Denny Cherry在管理SQL Server有着二十几年的工作经验,其中包括世界上最大的数据库之一,即拥有超过1.75亿用户的数据库MySpace.com。Denny的专长领域包括系统架构、性能调优、复现和故障排除。他是一位资深的数据库管理员和Awareness Technologies的架构师。Denny是PASS和Quest Software's Association of SQL Server Experts的长期成员同时还撰写了大量关于SQL Server管理方面的文章。