SQL Server内存优化

ElH*_*aix 0 sql-server optimization query-optimization sql-server-2008

这将是我第一次尝试微调我们的SQL Server 2008R2,我想要一个基于以下内容的起点.

当我查看资源监视器时,我看到(以KB为单位):提交:843,948工作集:718,648可共享:26,276私人:692,372

在我们的虚拟服务器上可用的2个演出中,1.6正在用完,我怀疑它是由于SQL Server,当我启动一个TVP插入和检查的服务时,内存会被弄糟.我已经在我的c#服务中添加了一些GC.collect(),但是我并没有真正看到很多变化,这让我回到了SQL Server.

基于这些信息和一些快速指针,我将在哪里学习更多有关优化的良好起点?

谢谢.

Rem*_*anu 5

这是一个快速指针:购买更多内存.今天2GB没什么.

对于长期答案:您需要了解SQL Server如何分配和使用内存.2Gb盒子上的1.6Gb是完全正常的.请参阅动态内存管理:

当SQL Server启动时,它会根据许多参数(例如系统上的物理内存量,服务器线程数和各种启动参数)计算缓冲池的虚拟地址空间大小.SQL Server为缓冲池保留其进程虚拟地址空间的计算量,但它仅获取(提交)当前负载所需的物理内存量.

然后,实例继续根据需要获取内存以支持工作负载.随着越来越多的用户连接并运行查询,SQL Server会根据需要获取额外的物理内存.SQL Server实例继续获取物理内存,直到它达到其最大服务器内存分配目标或Windows表示不再有超出可用内存; 当它具有超过最小服务器内存设置时,它释放内存,Windows指示可用内存不足.

换句话说,除非有来自Windows的内存压力通知,否则SQL Server 不会释放1.6Gb.

最后,关于你在哪里寻找优化信息的问题:等待和队列是一个很好的资源.这是一种方法,允许您识别瓶颈并为所有常见的瓶颈案例推荐适当的操作.