详解如何让WIN2003和SQL2005支持4G以上内存

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
一台新服务器,内存配置有4GB,开机也正确显示4G,但安装了WIN2003SP1以后,系统显示只有3.37G,原以为内存有硬件故障,后经检查,按如下做。

1.打开系统中的大内存支持(windows)
    若要启用 Windows 2000 Advanced Server 或 Windows 2000 Datacenter Server 支持
大于4GB的物理内存,必须将参数 /pae 添加到 boot.ini 文件中。
[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server"
/fastdetect

改为
[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server"
/fastdetect /PAE
这个改好后,要重启系统的

2.启用锁定内存页选项(windows)
启用锁定内存页选项
在"开始"菜单上单击"运行"子菜单,然后在"打开"框中键入"gpedit.msc"。
在"组策略"控制台上,展开"计算机配置",然后展开"Windows 设置"。
展开"安全设置",然后展开"本地策略"。
选择"用户权限分配"复选框。
详细资料窗格中随即显示出策略。
在详细资料窗格中,双击"锁定内存页"。
在"本地安全策略设置"对话框中,单击"添加"按钮。
在"选择用户或组"对话框中,添加有权运行 sqlservr.exe 的帐户。

3.启用SQL的AWE
    若要启用 AWE,请将 awe enabled 设置为 1。除非指定了 max server memory 的值,否
则 SQL Server 将保留几乎所有可用内存,只留下 128 MB 或更少。

    如果已成功启用该选项,则当 SQL Server 2000 实例启动时,SQL Server 错误日志中将
出现"已启用地址窗口扩展"这条消息。

    awe enabled 是高级选项。如果正在使用 sp_configure 系统存储过程更改该设置,则只有
当 show advanced options 设置为 1 时才能更改 awe enabled。
code 如下,设定SQL 使用6G的内存
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
sp_configure 'max server memory', 6144
RECONFIGURE
GO

必须重新启动 SQL Server 2000 实例才能使更改生效。
net stop mssqlserver
net start mssqlserver

这样,SQL 服务启动后,就会把6G的内存给锁定,完全供SQL使用

    仅 Windows 2000 Datacenter Server、 Windows 2000 Advanced Server、Windows Server 2003、Enterprise Edition 和 Windows Server 2003 Datacenter Edition 支持 PAE。 在 32 位 Windows 中,默认情况下将禁 用 PAE,并且必须在 BOOT.INI 文件中设置 /pae 引导参数才可启用 PAE

    为什么要这样做呢,因为32位的系统只能寻址到4G的内存空间,通过修改BOOT文件 可以把其余内存做为可扩展物理内存 但是如果自己内存刚好为4G的话 就不建议修改了 效果不是很理想

    硬件支持最大的内存容量可以这么算:支持最大内存容量=2的N次方位。

    32位硬件支持的最大内存容量换算下来就是2的32次方,换算下来就是4G,64位硬件支持的最大内存容量是2的64次方,换算下来就是16EB=16*1024PB=16*1024*1024TB=16*1024*1024*1024GB。

 

操作系统内存支持

Windows
    WindowsNT4.0 Server与Enterprise版都属于32位服务器操作系统,支持最大内存都只有4G 。

  Windows2000系列服务器版操作系统可支持容量最高的是数据中心版,可支持32G;高级服务器版只支持最高8G的内存容量;2000普通服务器版只支持最高4G的内存容量。

  Windows2003Enterprise支持最高32G的内存。

  新推出的64位Vista最高版本支持最大128G内存。

Linux

  Linux的Kernel内核属于32位,也只支持最大4G内存。

  Linux的Bigmem和Smp内核,属于64位操作系统,可支持最大64G内存。

   一些操作系统在内核代码中限制了内存位宽,所以就算是64位操作系统,不同的版本在默认情况下,也都只支持特定的最大内存容量,需要进行PAE扩展设置 以达到最大支持的内存容量。比如在Windows2003Enterprise中,如果直接插入4G内存,不进行任何更改,那系统辨认出来的物理内存可能 只有3G出头,需要在系统引导文件里设置pae内存扩展支持。

    x86的32架构允许的最大内存寻址空间为4GB。Intel Physical Address Extension(PAE)是36位内存寻址模式,允许32系统寻址能力超过4GB。

    PAE需要适当的硬件和操作系统支持。处理器为Intel Pentium Pro以上,操作系统支持Windows NT 4.0企业版,Windows 2000高级服务器版和数据中心版,以及Windows Server 2003企业版和数据中心版。

    Windows使用PAE的4KB页面映射64GB物理内存到32位(4GB)虚拟地址空间。Windows 2000和Windows Server 2003中允许PAE的方式是在BOOT.INI中加/PAE开关。

    Address Windows Extensions(AWE)是Windows APIs的一个集,可以从PAE方式获益,让应用程序可以直接访问超过4GB的物理内存。一些程序如SQL Server 2000企业版,使用了这些API来编写,可以在每个处理器的内存寻址超过2G时获得很大性能提升。

编辑BOOT.INI文件激活PAE的方法如下:
打开控制面板中的系统
选择高级
在启动和恢复页点击设置按钮
点击编辑,记事本打开BOOT.INI文件
编辑ARC路径并在后面添加/PAE开关

本文转自博客园知识天地的博客,原文链接:详解如何让WIN2003和SQL2005支持4G以上内存,如需转载请自行联系原博主。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8月前
|
SQL 数据库 流计算
flink-connector-sqlserver-cdc支持SQL server的内存优化表
flink-connector-sqlserver-cdc支持SQL server的内存优化表
64 1
|
数据处理
海量数据处理面试题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
海量数据处理面试题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
559 0
海量数据处理面试题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
|
SQL 监控 关系型数据库
MySQL 8.0不再担心被垃圾SQL搞爆内存
MySQL 8.0.28开始,新增一个特性,支持监控统计并限制各个连接(会话)的内存消耗,避免大量用户连接因为执行垃圾SQL消耗过多内存,造成可能被OOM kill的风险。 首先,需要先设置系统选项 global_connection_memory_tracking = 1,之后可以通过系统状态变量 Global_connection_memory 查看当前所有连接消耗的内存总量:
299 0
|
Java
32位操作系统单进程最大使用4G内存
有此疑问的原因:在看jvm书籍时,碰到了介绍“直接内存”的内容,直接内存不是虚拟机运行时数据区的一部分,所以也就不是jvm名义上管理的部分,同时《java虚拟机规范》也未对其定义,但是这块区域也会被经常使用。这块区域使用的是计算机本身的内存,那么就需要考虑在给jvm各个区域提供参数时各个值的大小了,比如32位操作系统中,单进程最大可用4G的内存,如果jvm中各个区域占用内存很接近4G的话,就可能导致直接内存这块产生OOM(直接内存区域也会有OOM产生,这里不说原因了)。
154 0
|
SQL JSON 分布式计算
像写SQL一样去处理内存中的数据,SparkSQL入门教程
读取到的数据是DataFrame,接下来的操作就是对DataFrame的操作了。 (五)总结 SparkSQL是对Spark原生RDD的增强,虽然很多功能通过RDD就可以实现,但是SparkSQL可以更加灵活地实现一些功能。我是鱼仔,我们下期再见。
|
SQL 缓存
怎样解决SQL Server内存不断增加问题
怎样解决SQL Server内存不断增加问题
682 0
|
算法 C++
利用动态规划算法解01背包问题->二维数组传参->cpp内存管理->堆和栈的区别->常见的内存错误及其对策->指针和数组的区别->32位系统是4G
1、利用动态规划算法解01背包问题 https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html 两层for循环,依次考察当前石块是否能放入背包。
1253 0
|
SQL 存储 缓存
sql server 性能调优 资源等待之内存瓶颈的三种等待类型
原文:sql server 性能调优 资源等待之内存瓶颈的三种等待类型 一.概述   这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),SOS_RESERVEDMEMBLOCKLIST(0x007B),RESOURCE_SEMAPHORE_QUERY_COMPILE(0x011A)。
1211 0
|
SQL 存储 缓存
sql server 内存初探
原文:sql server 内存初探 一. 前言    对于sql server 这个产品来说,内存这块是最重要的一个资源, 当我们新建一个会话,相同的sql语句查询第二次查询时间往往会比第一次快,特别是在sql统计或大量查询数据输出时,会有这么感觉。
1128 0