经常被问到的一个问题:对于SQL Server,我需要多少内存?这个问题还是有同样的典型的“看情况而定”答案。在今天的文章里,我们来详细看下“看情况而定的”的不同方面。

全新SQL Server安装

首先,对于全新的SQL Server安装,我想谈下你如何估计你需要的内存大小。然后我会详细谈下你如何验证现存的SQL Server有足够的可用内存。

对于全新的SQL Server安装,估计下需要多少内存,是个很有挑战的工作,因为:

  • 你必须知道在你的内存里(你的工作区)要保持多少数据
  • 你必须知道你的索引策略是怎样
  • 你必须知道你是否要使用SQL Server的标准版,还是企业版本。

从这个清单里你可以看到,问题的答案主要取决于你。我们再谈下清单里的每个项目。

你查询的数据越多,你需要更多的内存。假设,你的大多数数据是用户不常查询的归档数据。在这个情况下,你的数据留在你的存储系统里,且从不加载到内存。就想下你的日志和审计表:对于这些特定的表,你真的要查询多少数据?

更好的索引策略是,你需要的内存更少!如果你有一个真的不好的索引策略(甚至你没有索引策略!),你会需要大量的内存来支持你的工作负荷。假设你有100GB数据的表,你在表里查询特定行。如果你在查询谓语上没有支持的索引。SQL Server会扫描你的整个堆表或聚集表。这就是说SQL Server需要加载你的“整个”表到内存里,只返回1条记录!有了支持的索引,SQL Server可以进行高效的查找操作,只需要读几个页就可以返回请求的记录。这个会是天差地别——相信我!

对于你的SQL Server安装,SQL Server的版本也会影响你可以有的内存大小。使用标准版本,你会限制只能用到128G的内存。这听起来是很多内存,胆实际上是啥也不是!如果你的数据库包含几个TB的数据,且你用标准版本的SQL Server(预算限制)。在这个情况下,对于每个单独的提交到SQL Server的查询,你要非常小心,而且你要确保你要有完全一致的索引策略。使用企业版本就不需要考虑这么多,因为SQL Server支持系统的最大内存(Window Server 2016目前支持12TB的内存)。

现存的SQL Server安装

对于现存的SQL Server安装,对于的工作负荷,很容易找出你是否有足够的内存。我们都知道,SQL Server在缓存池里存储所有从存储子系统里获得的页。而且缓存池为你提供一个名为PAGE LIFE EXPANCTANCY的计数器。这个计数器告诉你在缓存池里SQL Server在每个8K页的存储时间。

现在你的PAGE LIFE EXPANCTANCY计数器至少有一些几千秒。内存越大,这个数字越高。如果你的PAGE LIFE EXPANCTANCY低于那个阈值,你会有很严重的问题,因为SQL Server不能在缓存池里保持你的数据太长时间。作为副作用,你会引入更多的物理I/O,整个服务器性能会下降。再提一下,你可以在索引策略上下功夫,确保从存储子系统里读取的数据都是你查询逻辑请求的数据。

小结

对于你的SQL Server你应该有多少内存,真的是个“看情况而定”的问题。如果你使用标准版的SQL Server,你应该至少有这个版本给你支持的最大内存。越多越好。而对于企业版的SQL Server,你应该有尽可能多的内存。内存相比企业版的授权,现在已经越来越便宜了。因此不要在错误的地方省钱啦!

感谢关注!

原文链接

https://www.sqlpassion.at/archive/2016/09/19/how-much-ram-do-i-need-for-sql-server/

对于SQL Server,我需要多少内存的更多相关文章

  1. 显示SQL Server分配的全部内存

    1.在sqlserver 中建立查询 2.执行 DBCC MEMORYSTATUS 在Windows Server 2000/2003任务管理器中,“内存使用”这个字段是显示工作区分配的内存.一个进程 ...

  2. 如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况

    https://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完 ...

  3. 《Troubleshooting SQL Server》读书笔记-内存管理

    自调整的数据库引擎(Self-tuning Database Engine) 长期以来,微软都致力于自调整(Self-Tuning)的SQL Server数据库引擎,用以降低产品的总拥有成本.从SQL ...

  4. ms sql server缓存清除与内存释放

    Sql Server系统内 存管理在没有配置内存最大值,很多时候我们会发现运行Sql Server的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系 ...

  5. SQL Server没有足够的内存继续执行程序 (mscorlib)的解决办法

    在Microsoft SQL Server Management Studio 中执行较大的sql脚本时,会报没有足够的内存继续执行程序(mscorlib)的错误.如下图所示 解决方法: 使用sqlc ...

  6. SQL Server 缓存清除与内存释放

    Sql Server系统内存管理在没有配置内存最大值,很多时候我们会发现运行SqlServer的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰 ...

  7. SQL Server 2008 R2占用内存越来越大两种解决方法

    SQL Server 2008 R2运行越久,占用内存会越来越大. 第一种:有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定期执行下边 ...

  8. 疑难杂症--SQL SERVER 2012下数据库内存异常回收

    --=================================================================== --背景: 在一台SQL SERVER 2012 SP1(1 ...

  9. SQL Server 2008 R2占用内存越来越大解决方法

    最近开发sql server数据库项目的过程中发现了这么一个问题,后台网站内存占用95%,通过任务管理器查看占内存的进程sqlserver.exe,是因为SQL Server 2008 R2运行越久, ...

  10. SQL Server Sleeping会话占用内存资源浅析?

      在SQL Server中,会话的状态有运行(Running).睡眠(Sleeping).休眠(Dormant).Preconnect 等状态,有时候你会在数据库中看到很多会话处于睡眠(Sleepi ...

随机推荐

  1. ubuntu下 编译安装swftools

    1.下载:http://www.swftools.org/download.html2.安装: tar -zvxf swftools-0.x.x.tar cd swftools-0.x.x ./con ...

  2. 安卓动态调试七种武器之离别钩 – Hooking(上)

    安卓动态调试七种武器之离别钩 – Hooking(上) 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的 ...

  3. RBAC模型速记

    RBAC Model core concept: user,role,permission,operation,resource user has many roles, assign role to ...

  4. 使用vbs脚本进行批量编码转换

    使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默 ...

  5. 如何在 ASP.NET MVC 中集成 AngularJS(3)

    今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...

  6. EF:The provider did not return a ProviderManifest instance

    报告错误1:指定的存储区提供程序在配置中找不到,或者无效. 报告错误2:System.Data.ProviderIncompatibleException: The provider did not ...

  7. Rxjava异常处理

    异常处理 在Rxjava订阅的Observable有时会抛出异常,在RxJava中有两大类策略,一个是准备备用的Observable,在发生异常时将subscriber订阅到新的Observable上 ...

  8. Viewport---响应式 Web 设计----在路上(13)

    什么是 Viewport? viewport 是用户网页的可视区域. viewport 翻译为中文可以叫做"视区". 手机浏览器是把页面放在一个虚拟的"窗口"( ...

  9. Java 的设计模式之一装饰者模式

    刚开始接触装饰者的设计模式,感觉挺难理解的,不够后来花了一个晚上的时间,终于有头绪了 装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行 ...

  10. iOS之Core Data及其线程安全

    一.简介 Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对 ...