经常被问到的一个问题:对于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. 大家一起Aop

    一.前言 1.在项目中无处不充斥着记录日志的代码,各种try catch,实在是有点看着不爽.这不,果断要想法子偷个懒儿. 二.摘要 鄙人不才,先总结一下个人想到的可实现AOP的几种思路: 1.通过继 ...

  2. PHP是怎么运行的

    这篇文章,研究一下PHP代码是如何解释和执行以及PHP脚本运行的生命周期. 概述 PHP服务的启动.严格来说,PHP的相关进程是不需要手动启动的,它是随着Apache的启动而运行的.当然,如果有需要重 ...

  3. ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

    一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留 ...

  4. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  5. 玩转Windows服务系列——创建Windows服务

    创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Windows服务项目. 生成的解决方案包含两个项目:Servi ...

  6. 表格搞定 Asp.net Web 状态管理

    最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下. 1. 希望自己通过整理,能够掌握一些,为自己投资. 2. 以便自己忘记,又要浪费时间搜罗. 3. 希望 ...

  7. 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信

    在工控测试系统中,经常需要使用到各类程控仪器,这些程控仪器通常具有GPIB.LAN.USB等硬件接口,计算机通过这些接口能够与其通信,从而实现自动测量.数据采集.数据分析和数据处理等操作.本文主要介绍 ...

  8. Ubuntu 安装OpenERP

    网上的都TM不靠谱.... 1.用root登录,修改/etc/apt/sources.list 文件 sudo /etc/apt/sources.list u root 注意一定要加U root否则没 ...

  9. Getting&Giving

    Technologies: Want to know: 1 emergency 1: 现在的工作即将需要的.要用到的技术 2 emergency 2: 现在的工作不相关.但公司相关的的技术 3 eme ...

  10. Adobe Photoshop CC 打开时报错~配置错误:请卸载并重新安装该产品

    后期会在博客首发更新:http://dnt.dkill.net 异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 个人估计,要么安 ...