SQL Server 2008 R2不利用分配的内存

我们的应用程序运行在具有4核CPU,8GB RAM和Sql Server 2008 R2标准版(10.50.1600.1)(64位)的服务器上。 服务器专用于Sql Server,没有其他繁重的服务正在运行。

我们将最小/最大内存使用分别设置为4 / 6.4 GB。 AWEclosures,locked_pa​​ge count始终为0. Sql Server的处理器关系自动维护,Windows的虚拟内存pipe理也设置为auto。

问题是,物理内存使用永远不会超过723 MB。 即使在后台运行重负载报告时也是如此。 我们正面临着巨大的locking等待。

服务器运行在我们认为是问题原因的虚拟机上,但在迁移到物理服务器后仍然存在。

什么可以限制内存使用量?

编辑(OS):Windows 8.1。 数据库以前在具有几乎相同的容量的虚拟Windows 2008服务器上运行。 为了testing目的,移到这个。 足够的应用程序configuration。

我试过页面locking。 将网页locking权限授予运行服务的NETWORKSERVICE用户,使用组策略设置。 然后打开AWE。 没有帮助。

编辑(locking):这有一个明显的原因。 我们的手持设备在Sql Server CE上离线传输数据。 一旦他们开始将他们的日常数据传输到主数据库,由于长时间运行的交易,其他客户端等待获取锁,主要是LCK_M_S。 尽pipePDA逐行传输数据,但由于索引,引擎大多会locking多个页面。 我们不知道如何解决这个问题,因为我们不能select不使用交易。

下面你可以看到来自同一个应用程序的两个安装的一些指标。 在这个问题中右列值属于服务器。 而左边的属于最大的实现。 第一个显然需要更多的记忆。

Total Mem (GB) 14 8 Mem Used by SQL Server (GB) 12,5 0,5 Page Faults (per minute) 13500 1200 Key Lock Count 6 3 Key Lock Wait (sec) 20 11 Page Lock Count 8 3 Page Lock Wait (sec) 65 591 Stolen Pages 145945 12525 Database Pages 1045799 25564 Database Size On Disk (MB) 52504 269 User Connections 95 18 Buffer Cache Hit Ratio (%) 100 100 

最大服务器内存意味着你的服务器不能使用超过这个数量,而不是它必须使用那个数量。 最servlets器内存并不意味着它必须使用这个数量; 这意味着,一旦服务器使用了这么多,它不会将内存交给低于这个数量。 基本上,SQL Server使用它所需要的内存量,直到它达到您设置的上限,并且如果它停止使用它,可能会将其部分退回,除非您设置了最小内存。

那就是说:

微软对SQL Server 2008 R2内存的build议是…乐观的。 (他们推荐4GB或更多)。你没有说你正在使用什么操作系统,但是他们也推荐Windows Server 2008 R2使用2GB内存,2012年使用8GB内存。

基本上:操作系统安装的“最小”512MB内存数字基本上是“安装程序将拒绝运行在这个数字以下”。 (对于SQL,1GB内存也是如此)。

我的想法? 操作系统是什么使用你的RAM。

你不说你使用的是什么操作系统? 但总共8GB的服务器? 对于一台现代化的机器来说,这只是一个疯狂的低点,当你说物理内存使用率从来没有超过723MB,我假设你正在谈论SQL服务器,而不是整个服务器? 只是试图build立一切

右边必须同意上面的post,有没有某种forms的物理原因,你只有8G的RAM? 你现在在笔记本电脑上得到这个。 我甚至不确定,我会很乐意在Win 2008上运行8Gb文件服务器,更不用说增加SQL了吗? 这不是像RAM是昂贵的,MAX在该机器上的RAM,假设你可以把更多的,如果你不能那么这是这种某种types的桌面这是安装? 你有什么样的驱动器/arrays? 数据库是I / O密集的SATA驱动器是真正的垃圾,如果你已经镜像他们会更糟,因为一切都写两次。 就我而言,一个数据库的SOP是RAID 10没有理由不使用它非常快速恢复。