首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server内存优化

SQL Server内存优化
EN

Stack Overflow用户
提问于 2011-11-29 07:04:38
回答 3查看 5.6K关注 0票数 0

这将是我第一次尝试对我们的SQL Server 2008R2进行微调,我希望从以下几个方面入手。

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

在我们的虚拟服务器上可用的2 it中,1.6正在耗尽,我怀疑这是由于SQL server造成的,并且当我启动执行大量TVP插入和检查的服务时,内存被消耗。我已经在我的c#服务中添加了一些GC.collect(),但是我并没有看到太多的变化,这将我引回到SQL Server。

根据这些信息和一些快速提示,我应该从哪里开始学习更多关于优化的知识?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-29 08:54:23

这里有一个快速指针:购买更多内存。2 2GB在今天不算什么。

长话短说:您需要了解SQL Server如何分配和使用内存。在2 2Gb的盒子上使用1.6 2Gb是非常正常的。请参阅Dynamic Memory Management

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

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

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

最后,关于在哪里可以找到优化信息的问题:Waits and Queues是一个优秀的资源。它是一种方法,允许您识别瓶颈,并针对所有常见的瓶颈情况建议适当的操作。

票数 5
EN

Stack Overflow用户

发布于 2011-11-29 07:52:22

SQL Server旨在预先分配和“吃光”您让它使用的所有内存。除了减少配置中的SQL占用空间之外,确实看不到任何改进。

票数 1
EN

Stack Overflow用户

发布于 2011-11-29 08:07:44

如果这是默认配置,sql server将分析使用情况,然后尽可能多地获取内存来优化自身。如果其他应用程序开始请求内存,它会返回内存。

在内存方面,您可以使用几个值,最小值是sql server将保留给自己的内存量,最大值是它永远不会占用的内存量。您还可以调整它将运行的线程数。为此,您需要一些好的统计数据。这取决于您的使用模式,还有什么需要内存,以及它与其他内存的配合情况。搞砸了,你可能会饿死sql服务器,这从来都不是个聪明的主意。我一直是dbms专用机器的铁杆粉丝,用于任何不重要的用途。

这就像科学一样艺术,除非你发现其中有可怕的东西,减慢你的sql服务器会给你的应用程序提供大量的内存来无所事事,因为它们正在等待Db……

更多的东西可以看一看。MSDN - Sql Server Performance and Memory你需要进行性能监控,并且对运行过程中发生的事情有一个很好的了解。你想要一次“平均”的跑步。高峰点击率,非办公时间处理,节假日等,根本没有用。

PS别忘了性能监控对机器有很大的影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8303660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档