经常被问到的一个问题:对于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,我需要多少内存的更多相关文章
-
显示SQL Server分配的全部内存
1.在sqlserver 中建立查询 2.执行 DBCC MEMORYSTATUS 在Windows Server 2000/2003任务管理器中,“内存使用”这个字段是显示工作区分配的内存.一个进程 ...
-
如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
https://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx 注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完 ...
-
《Troubleshooting SQL Server》读书笔记-内存管理
自调整的数据库引擎(Self-tuning Database Engine) 长期以来,微软都致力于自调整(Self-Tuning)的SQL Server数据库引擎,用以降低产品的总拥有成本.从SQL ...
-
ms sql server缓存清除与内存释放
Sql Server系统内 存管理在没有配置内存最大值,很多时候我们会发现运行Sql Server的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系 ...
-
SQL Server没有足够的内存继续执行程序 (mscorlib)的解决办法
在Microsoft SQL Server Management Studio 中执行较大的sql脚本时,会报没有足够的内存继续执行程序(mscorlib)的错误.如下图所示 解决方法: 使用sqlc ...
-
SQL Server 缓存清除与内存释放
Sql Server系统内存管理在没有配置内存最大值,很多时候我们会发现运行SqlServer的系统内存往往居高不下.这是由于他对于内存使用的策略是有多少闲置的内存就占用多少,直到内存使用虑达到系统峰 ...
-
SQL Server 2008 R2占用内存越来越大两种解决方法
SQL Server 2008 R2运行越久,占用内存会越来越大. 第一种:有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定期执行下边 ...
-
疑难杂症--SQL SERVER 2012下数据库内存异常回收
--=================================================================== --背景: 在一台SQL SERVER 2012 SP1(1 ...
-
SQL Server 2008 R2占用内存越来越大解决方法
最近开发sql server数据库项目的过程中发现了这么一个问题,后台网站内存占用95%,通过任务管理器查看占内存的进程sqlserver.exe,是因为SQL Server 2008 R2运行越久, ...
-
SQL Server Sleeping会话占用内存资源浅析?
在SQL Server中,会话的状态有运行(Running).睡眠(Sleeping).休眠(Dormant).Preconnect 等状态,有时候你会在数据库中看到很多会话处于睡眠(Sleepi ...
随机推荐
-
别老嫌Mac系统难用 这些快捷键你都用过吗
苹果今年10月发布的全新带把儿(bar)的MacBook,轻薄炫酷的外观大受欢迎,其中当然不乏很多从Windows转到Mac阵营的用户.不少习惯了Windows操作习惯的用户在上手Mac时都会觉得非常 ...
-
部署rfc5766-turn-server--谷歌推荐的开源穿透服务器 [复制链接]
谷歌推荐的开源穿透服务器,包含trun和stun服务,主页:https://code.google.com/p/rfc5766-turn-server/(个人觉得可以利用这个来进一步搭建VPN,有兴趣 ...
-
HTML5自学笔记[ 14 ]canvas绘图基础2
canvas绘制路径不仅可以绘制直线和多边形,还提供了绘制曲线的方法,利用这些方法可以画出多种曲线效果. 方法1:arc(x,y,r,起始弧度,结束弧度,绘制方向);其中(x,y)为圆心坐标,r为半径 ...
-
如何使用axis2 构建 Android 服务器后端--- 工具准备与环境配置
最近一个项目要做个android端的实验室器材管理系统.小伙伴英勇地接下android端的锅,我就 负责给他写后端,最近看到axis2 这个webservice挺好用的,折腾了几天给大家分享下: 1. ...
-
php做站点购物车 你搞懂了吗?
网上购物现已成为时尚,客户选择一个商品将其放入到购物车,然后返回继续购物或者去收银台,这个功能怎样实现呢?今天capucivar就将使用PHP来实现这个购物车的功能. 首先,做一个简单的首页,从数据库 ...
-
<;ListView>;分列显示
<ListView> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Width="{B ...
-
三、原子变量与CAS算法
原子变量:jdk1.5 后 java.util.concurrent.atomic 包下提供了常用的原子变量: - AtomicBoolean - AtomicInteger - AtomicLong ...
-
性能测试系列-java gc调优
性能测试中除了需要做好性能测试外,我们还需要做性能测试后的,性能调优,需要发现性能问题,也需要做性能调优,在做性能调优中,jvm的性能调优是经常遇到的一个. 随着jdk版本的迅速变化,jdk里面的GC ...
-
【开源GPS追踪】 之 为何费力不讨好
GPS追踪,在X宝上一搜一大堆,价格几十到几百层次不齐,为何还要自己开发? 1 对我来说,就是手头有这些硬件资源(GPRS GPS MCU)以及软件资源(VPS),算闲的蛋疼,其实不然,本人工作也很忙 ...
-
NPOI 导入为table 处理excel 格式问题
ICell cell = row.GetCell(j); if (!cell.isDbNullOrNull()) { switch (cell.CellType) { case CellType.Bl ...