如何启用SQLSERVER2005服务器属性中的“使用AWE分配内存”

如何启用SQLSERVER2005服务器属性中的“使用AWE分配内存”,第1张

SQL Server 支持地址窗口化扩展插件 (AWE),从而允许在 32 位版本的 Microsoft Windows *** 作系统上使用超过 4 GB 的物理内存,最多可支持 64 GB 的物理内存。默认情况下,禁用 Windows 策略“锁定内存页”选项。对于 32 位 *** 作系统,在将 AWE 配置为用于 SQL Server 之前,必须授予“锁定内存页”权限,必须启用此权限才能配置地址窗口化扩展插件 (AWE)。此策略将确定哪些帐户可以使用进程将数据保留在物理内存中,从而阻止系统将数据分页到磁盘的虚拟内存中。在 32 位 *** 作系统中,如果在不使用 AWE 的情况下设置此权限会显著降低系统性能。
如何启用“锁定内存中的页”选项:
1在“开始”菜单上,单击“运行”。在“打开”框中,键入 gpeditmsc。
将打开“组策略”对话框。
2在“组策略”控制台上,展开“计算机配置”,再展开“Windows 设置”。
3展开“安全设置”,再展开“本地策略”。
4选择“用户权利指派”文件夹。
细节窗格中随即显示出策略。
5在该窗格中,双击“锁定内存中的页”。
6在“本地安全策略设置”对话框中,单击“添加”按钮。
7在“选择用户或组”对话框中,添加有权运行 sqlservrexe 的帐户。
若要使 32 位 *** 作系统支持 4 GB 以上的物理内存,则必须向 bootini 文件添加 /pae 参数并重新启动计算机。
使用如下语句启用AWE并配置实例所使用的缓冲池内存量:
sp_configure 'show advanced options', 1RECONFIGUREGOsp_configure 'awe enabled', 1RECONFIGUREGO sp_configure 'min server memory', 2048RECONFIGUREGOsp_configure 'max server memory', 4096RECONFIGUREGO 或在“服务器内存选项”下,选择“使用 AWE 分配内存”,并分配最小/最大服务器内存。
由于 *** 作系统上运行的 SQL Server 2005 不支持动态分配 AWE 映射内存,因此,强烈建议为每个实例都设置 max server memory 选项,且所有实例的 max server memory 值的总和应小于计算机的总物理内存。转载
使用 SQL Server 性能监视器 Total Server Memory (KB) 计数器可以确定在 AWE 模式下运行的 SQL Server 实例所分配的内存量,也可以从 sysperfinfo 中选择内存使用量来确定实例所分配的内存量。

1、在性能层面
普通的内存正常情况下都是要看内存条的规格有DDR3和DDR4两种,,频率是2133还是3000,用的是什么颗粒?内存时序是多少?等
服务器内存最重要的是要稳定和纠错,并不会去追求更高的频率或者速度,但是会更加看重技术,可以这么说,部分先进的技术都用在了服务器内存上,而大部分先进的工艺都用在了普通内存上。
2、在技术层面
服务器的内存条支持ECC错误校验技术,经过错误校验、纠正,无形中也就保证了服务器系统的稳定可靠。ECC技术的主要作用是用于数据纠错,毕竟服务器内存通常都是长时间工作负载,连续通电工作一个月都是很正常的时,为了保证运行的稳定必须要对内存里的数据进行纠错,才能确保计算机指令的正确传达和执行。
普通内存条检测到错误时,并不能确定错误在哪一位,也无法修正错误。普通内存通常只需要持续工作几小时或十几小时就行。普通的内存条也不具备热插拔这样的技术,想要对PC的内存进行更换等 *** 作都需要关机断电才行。
3、在容量层面
服务器的内存条容量通常是以4GB起步,服务器里面也会根据实际情况选择安装大容量的内存条。普通内存条容量通常是以2GB起步,现在的电脑上面4~8GB的内存已经够用。

本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis222及以上版本,Redis28及以上版本。
一、安装redis
安装方法,可以参考:>

因为SQLserver版本是32位的,你看下win2008是不是64位?

1、安装64位的 *** 作系统,安装64位MSSQL。这方法比较符合硬件,但是要重装软件。

或者

2、打开"SQL Server Management Studio"点服务属性,开启“AWE”,设立最大内存301024(保留2G给 *** 作系统用),选中“配置值”。然后重启服务

注:看下 *** 作系统识别出来多内存,如果小于4G,则要为 *** 作系统开启“/PAE”

>

>

1、redis中的每一个数据库,都由一个redisDb的结构存储。其中,redisDbid存储着redis数据库以整数表示的号码。redisDbdict存储着该库所有的键值对数据。redisDbexpires保存着每一个键的过期时间。

2、当redis服务器初始化时,会预先分配16个数据库(该数量可以通过配置文件配置),所有数据库保存到结构redisServer的一个成员redisServerdb数组中。当我们选择数据库selectnumber时,程序直接通过redisServerdb[number]来切换数据库。有时候当程序需要知道自己是在哪个数据库时,直接读取redisDbid即可。

3、既然我们知道一个数据库的所有键值都存储在redisDbdict中,那么我们要知道如果找到key的位置,就有必要了解一下dict的结构了:

typedefstructdict{

//特定于类型的处理函数

dictTypetype;

//类型处理函数的私有数据

voidprivdata;

//哈希表(2个)

dicththt[2];

//记录rehash进度的标志,值为-1表示rehash未进行

intrehashidx;

//当前正在运作的安全迭代器数量

intiterators;

}dict;

由上述的结构可以看出,redis的字典使用哈希表作为其底层实现。dict类型使用的两个指向哈希表的指针,其中0号哈希表(ht[0])主要用于存储数据库的所有键值,而1号哈希表主要用于程序对0号哈希表进行rehash时使用,rehash一般是在添加新值时会触发,这里不做过多的赘述。所以redis中查找一个key,其实就是对进行该dict结构中的ht[0]进行查找 *** 作。

4、既然是哈希,那么我们知道就会有哈希碰撞,那么当多个键哈希之后为同一个值怎么办呢?redis采取链表的方式来存储多个哈希碰撞的键。也就是说,当根据key的哈希值找到该列表后,如果列表的长度大于1,那么我们需要遍历该链表来找到我们所查找的key。当然,一般情况下链表长度都为是1,所以时间复杂度可看作o(1)。

二、当redis拿到一个key时,如果找到该key的位置。

了解了上述知识之后,我们就可以来分析redis如果在内存找到一个key了。

1、当拿到一个key后,redis先判断当前库的0号哈希表是否为空,即:if(dict-

2、判断该0号哈希表是否需要rehash,因为如果在进行rehash,那么两个表中者有可能存储该key。如果正在进行rehash,将调用一次_方法,_用于对数据库字典、以及哈希键的字典进行被动rehash,这里不作赘述。

3、计算哈希表,根据当前字典与key进行哈希值的计算。

4、根据哈希值与当前字典计算哈希表的索引值。

5、根据索引值在哈希表中取出链表,遍历该链表找到key的位置。一般情况,该链表长度为1。

6、当ht[0]查找完了之后,再进行了次rehash判断,如果未在rehashing,则直接结束,否则对ht[1]重复345步骤。

到此我们就找到了key在内存中的位置了。

可以的,做成虚拟化,然后再虚拟成多台服务器,可以根据自己的需求进行分配资源,你参考正睿这个虚拟化方案(只用服务器,不用存储)
名称:服务器虚拟化解决方案
地址:>这要看你在服务器上运行什么服务了,通常来说,服务器的内存越大越好,当然如果是32位的Linux,最多可以管理的内存不超过4G,64位的就没有这个限制了。
但是如果你在服务器上运行的服务确定只需要512M内存就能运行很流畅,用户数量和服务规模都不会增加,那么就不用增加内存了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12745828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存