在专用数据库服务器上,要为操作系统保留多少内存?

Jef*_*ood 39 sql-server windows memory

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

我意识到这可能会有所不同,具体取决于特定的操作系统、特定的数据库软件等。但是,由于内存对数据库性能非常重要,我希望数据库具有最大合理级别的内存,而不会使主机操作系统挨饿。

所以

  • 什么是好的经验法则?
  • 我们应该查看哪些计数器或性能指标来确定我们是否走得太远并且主机操作系统是否以某种方式被数据库饿死?

mrd*_*nny 30

假设 Windows 和 SQL Server...

有两种思想流派。

  1. 为 Windows 保留 2-4 个 Gig(取决于除了 SQL Server 之外安装了什么)。
  2. 保留 10% 的可用内存空闲。当您获得超过 64 个 Gig 时,这将成为操作系统需要的大量内存,而它可能不需要。

我个人属于第一组。Windows 通常只需要 2-4 个演出,有时多达 6 个。

  • @Jeff Denny 的回答是正确的,对于 Perfmon 计数器,请观看 Memory: Available Bytes。如果它低于 512MB,则您将面临操作系统饿死的危险。但是,还要注意 64 位系统上的文件缓存,即使它不可用,它仍然显示为可用:http://blogs.msdn.com/b/ntdebugging/archive/2007/11/27/too-多缓存.aspx (6认同)
  • 同意为操作系统提供 2 ish gb 的 RAM。 (2认同)
  • @matt 是的,但是在查看“我是否使操作系统内存不足?”时,最好监控什么? (2认同)

Dan*_*man 16

假设 Linux,如果您关闭交换并且内核不断杀死您的数据库进程,因为它的内存不足,这是一个很好的指标,您正在使操作系统的内存不足。退后直到停止发生。几百兆通常就足够了。

  • 而且,仍然知道它是@jeff...为什么他不能学会停止担心并热爱 Linux?;-) (2认同)

Dan*_*man 8

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


小智 5

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