sqlserver2008r2x64最大内存限制是不是需要设定?设置多少为宜

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver2008r2x64最大内存限制是不是需要设定?设置多少为宜相关的知识,希望对你有一定的参考价值。

服务器上简单回答:
只需设定上限。上限以安装的实际内存数减去必要的留置值即可。
比如我的服务器,实际安装内存64G,设定不超过58G给SQL Server,6G留给别的应用。(个人做法仅供参考,服务器上的情况下同,需要经验)

相关知识:
1、具体的应设多大,应该看你的服务器上运行的数据库的情况,一般设定只上限,不设定下限。所以,当SQL Server不需要那么多内存时,它不会去占用。
2、如果不当设定,比如上限值太小,SQL Server就不得不频繁地去硬盘中交换数据,会降底数据库的速度与效率。而留出的内存太小,别的必要的应用得不到足够的内存,有可能影响别的应用,甚至会出现严重的错误。
3、如果是个人台式机上,SQL Server用于测试和学习,情况也类似,但建议不用它时,去控制面版中的服务中,关闭SQL 的相关服务,并设它们为手动。要用它们时,再手去启动。
4、注意,里设置的是内存使用,不是所谓的“硬盘缓存”,更没有什么“删除”的概念。对于数据量大的生产数据库,SQL Server会尽可能将常用的数据读到内存中,以加快数据的读写与运算。
5、同时也在这里提醒,SQL Server在运行过程中,有很多中间数据是没有写入硬盘的,所以强行关机、掉电、可能丢失数据,甚至损坏数据库文件,所以生产用SQL Server一定要运行在有UPS的环境中。并且不是在不得已的情况下,不要强行关机,强行关电。
参考技术A 一般建议:
如果你的内存足够多,那么不需要设置SQL Server的最大内存。
如果你的内存不是非常大,或者这台服务器同时还要运行其它应用程序,建议限制SQL Server的最大内存。

64 位 Java 的最大内存

【中文标题】64 位 Java 的最大内存【英文标题】:Max memory for 64bit Java 【发布时间】:2011-01-06 19:29:31 【问题描述】:

在 64 位平台上可以为 java 分配的最大堆空间量是多少?是无限的吗?

【问题讨论】:

为什么你认为它是无限的? 【参考方案1】:

理论上 264,但可能有限制(显然)

根据this FAQ,它仅受本地系统上的内存和交换空间的限制:

在 64 位 VM 上,您可以使用 64 位可寻址性,从而导致最大 Java 堆大小仅受系统提供的物理内存量和交换空间量的限制。

另请参阅 为什么我不能使用 32 位 JVM 获得更大的堆?

另外请记住,您需要通过命令行设置最大堆。没有 -Xmx 命令。没有它,Java 使用 64mb + 30% = 83.2mb 作为 64 位机器上的默认最大堆,根据相同的常见问题解答。

java -Xmx1000g myClass 

在我的机器上运行良好。但它似乎还不支持 't' 修饰符,因此您还不能以 TB 为单位指定最大内存 :)

【讨论】:

1000g 对你有用吗?我认为java 会在接受该选项之前验证是否有足够的内存。【参考方案2】:

如果您可以将宇宙中的每个原子都制成一个字节的 RAM,您就可以将其分配到 64 位地址空间中。

其实有点夸张。

宇宙中有 10^80 个原子(根据 WolframAlpha),在 64 位系统中有 2^64 字节的地址空间,因此您只能寻址每 5x10^60 个原子中的 1 个。但如果你有 18 千亿字节的 RAM,你可能需要几个量子黑洞来为它供电。

【讨论】:

@Stephen,我在您发表评论之前编辑了答案。 WolframAlpha 规则! 不想等待完整的收集! 就在我认为 Java 开始变得无聊的时候,我遇到了这样的旧帖子。恢复对 OOP 的信心。【参考方案3】:

这可能取决于您的 VM 运行的系统。如果您运行的是 AMD x64 架构,则当前交付的处理器的地址空间使用 48 位,而不是 64 位。这导致理论上的最大值约为 256 TB。 (见http://en.wikipedia.org/wiki/X86-64)

我不是虚拟机专家,但任何现代操作系统通常都会提供与物理 RAM 和可用虚拟内存一样多的内存。 可能这就是 VM 将根据其配置传递给您的应用程序的内容。

【讨论】:

相关 AMD 手册指出虚拟地址空间实际上是 64 位(第 2.2.1 章,AMD64 架构程序员手册,v3.14,2007 年 9 月)【参考方案4】:

对于 Sun 最近的 VM,实际堆限制大小通常是可用物理和/或虚拟内存的 512 倍。即使理论上的限制要高得多,VM 也会在启动时为每 512 字节的堆内存分配 1 字节用于管理目的,因此 1TB 的堆将立即需要 2GB 的内存管理。

【讨论】:

你能引用一个参考吗? 你不会找到任何参考。这只是虚拟机的实现方式,或者至少是在两年前的当前版本中实现的。【参考方案5】:

理论上它在2^632^64 字节之间。

实际上,它受到计算机上可用物理内存和交换空间的限制。而物理内存又受到芯片组(即物理内存地址总线上的地址引脚数量)和主板(即 DIMM 插槽的数量和大小)的限制。

【讨论】:

对于 AMD64,目前的规范预计有 40-52 个地址引脚。此外,它们支持 NUMA 架构,其中每个处理器都有一块内存,其他处理器只能间接访问。

以上是关于sqlserver2008r2x64最大内存限制是不是需要设定?设置多少为宜的主要内容,如果未能解决你的问题,请参考以下文章

windows2008R2系统内存支持

windows server 2008下装SQL 2008R2x64

Pig 0.12.0 在 Windows 2008 r2 x64 上的 Hadoop 2.3.0

安装SQL Server 2008 R2

sql server 2008 自动备份(非维护计划)

WIN7U X64环境下的SQL SERVER 2008R2的防火墙配置