如何解决SQL Server占用内存过多的问题

2016-02-19 21:17 1 1 收藏

今天图老师小编给大家介绍下如何解决SQL Server占用内存过多的问题,平时喜欢如何解决SQL Server占用内存过多的问题的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - 编程语言 】

  经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢?

  首先,我们来看看MSSQL是怎样使用内存的。

  最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。

  其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。

  所以用于关联和排序的列上一般需要有索引。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  再其次就是对执行计划、系统数据的存储,这些都是比较小的。

  我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MSSQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制MSSQL对内存的使用。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。

来源:https://www.tulaoshi.com/n/20160219/1625787.html

延伸阅读
标签: SQLServer
1.检查你是否使用了最新的Sql Server service pack 这是因为在最新的Sql Server service pack中已经修补了很多Sql Server使用警告(Alerts)的漏洞。你应该确保在你的系统中已经安装了最新的Sql Server service pack补丁包。 2.检查SqlServerAgent服务的帐户是否作为成员运行在域用户群组(Domain User Group)下 LocalSyst...
标签: SQLServer
最近,为了能在数据库服务器中运行其他应用程序,在保持数据库操作系统版本不变的前提下对数据库服务器进行了软、硬件上的升级。在软件上,将操作系统从Windows 2000升级到Windows Server 2003;在硬件上,将服务器中的内存由原来的512MB增加到1GB(1024MB)。 在升级后的开始几个星期之内,服务器在使用中表现良好。但是不久后就发现,在服...
标签: 电脑入门
大家在应用电脑时一定都遇到过机器提示内存不足的现象吧,那么什么是内存不足,又该如何处理呢,下面我们就来讲一讲有关这方面的内容。 所谓内存不足就是指在启动或运行DOS应用程序和Windows应用程序时,系统报Out of memory"或内存不足"的错误信息。内存不足是一种很常见的故障,运行DOS应用程序和Windows应用程序引起内存不足的原...
标签: SQLServer
问题 使用SQL Server Management Studio无法连接远程服务器,提示以下错误: 使用telnet 连接1433端口,报告连接失败,应该是网管封了1433端口。 解决 使用其它可用端口,方法是 1、在服务器上打开SQL Server Configuration Manager。选择SQL Server配置管理器-SQL Server 2005网络配置-MSSQLSERVER的协议-TCP/IP,在弹出对话框中选择IP地...
SQL SERVER数据库用datetime类型的时候 如果插入NULL,没有问题 如果插入空串"",就会默认1900-01-01 00:00:00

经验教程

756

收藏

26
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部