假设您有一个专门用于数据库功能的专用服务器-应该为操作系统保留多少内存?

我意识到这可能会有所不同,具体取决于特定的OS,特定的数据库软件和等等。但是,由于内存对于数据库性能非常重要,因此我希望数据库具有最大程度的合理内存级别,而又不会使主机OS饿死。

So



什么是最佳的经验法则?
我们应该查看哪些计数器或性能指标来确定我们是否走得太远并且数据库是否以某种方式使主机OS处于饥饿状态?


评论

你们曾经调整过这些设置吗?您的个人资料告诉了您什么?

@jcole目前没有要添加的内容;我们通常为操作系统保留4-6 GB的存储空间,这比我想要的要保守一些

#1 楼

假设Windows和SQL Server ...

有两种思想流派。


为Windows保留2-4个Gig(取决于除SQL Server之外还安装了什么)。
释放10%的可用内存。当您超过64 Gigs时,这将成为为操作系统留出大量疯狂的内存,而这可能并不需要。

我个人是第一类。 Windows通常只需要2-4个演出,有时最多需要6个演出。

评论


同意2 ish GB的RAM用于操作系统。

– jcolebrand♦
2011年1月13日下午4:12

我也同意。我通常为操作系统留出2GB的空间,并确保连续的页面文件空间。当然,您的里程可能会有所不同,最好的选择是配置设置,监视性能并根据需要进行谨慎的更改。

–马特M
2011年1月13日下午4:24

@matt是正确的,但是在查看“我是否使操作系统内存不足时,最好监视什么?”

–杰夫·阿特伍德
2011年1月13日在8:46

@Jeff我的评论并不像应有的那样精确。对于内存,我通常查看以下性能计数器:内存:页数/秒和内存:可用字节。请查看这些页面以获取更多信息:sql-server-performance.com/articles/audit/…和technet.microsoft.com/en-us/library/cc966540.aspx(特别是“内存瓶颈”部分)

–马特M
2011年1月13日下午14:32

@Jeff Denny的答案是正确的,对于Perfmon计数器,请注意“内存:可用字节”。如果它降到了例如512MB以下,您将有可能饿死该操作系统。但是,还请注意64位系统上的文件缓存,即使没有,文件缓存仍显示为可用:blogs.msdn.com/b/ntdebugging/archive/2007/11/27/…

–布伦特·奥扎(Brent Ozar)
2011年1月13日在16:07

#2 楼

假设是Linux,如果您关闭交换功能并且内核由于内存不足而继续杀死您的DB进程,则这很好地表明您正在使OS缺少内存。退缩直到停止发生。通常几百兆就足够了。

评论


为配置文件配置文件配置文件+1〜但是,是杰夫·阿斯金,我想肯定是SQLServer和Windows;)

– jcolebrand♦
2011年1月13日4:25



但是,@ jcolebrand也知道它是@jeff,您会知道他没有说,这意味着他有意将其保留用于所有平台和数据库。

– xenoterracide
2011年1月13日15:10



而且,仍然知道它是@jeff ...为什么他不应该学会停止担心并热爱Linux? ;-)

–于尔根·艾哈德(JürgenA. Erhard)
2011年1月17日在12:42

#3 楼

您可以在这里利用Amazon在运行数千个客户的数据库服务器上的经验:在Amazon Relational Database Service上,他们将MySQL的innodb缓冲池设置为系统内存的3/4,而不管它有多少内存。每个连接最多可添加几个兆,用于各种查询缓冲区,它们可能会将10-20%的内存留给操作系统。

#4 楼

您应该阅读布伦特·奥扎(Brent Ozar)的记忆。对于为什么您应该查看内存以及为什么更多的内存等于更好的性能,他有一些相当标准的答案。一般来说,为操作系统保留4 GB或10%的空间。