1. 首页 > 电脑手机 >

sqlserver内存占用高 sqlserver占用内存过高

sqlserver占用内存过高,清理办法

SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高。

sqlserver内存占用高 sqlserver占用内存过高sqlserver内存占用高 sqlserver占用内存过高


解决SQLServer数据库占用内存过多的问题

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

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

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

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

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

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

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

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

SQL Server占用内存过高,什么原因导致的,用什么方法可以解决

SQL Server占用内存过高的原因是SQL Server本身内存回收机制做的不好。SQL Server运行越久,占用内存会越来越大。

解决方法:

1.在程序里面启动SQL Server 2008,系统登录,右键点击服务名,选择“属性”。

2.在弹出的窗体里面,选择内存,在此红色框内就可以看到内存默认设置,此时可以根据自己实际需求进行估算后,进行设置,设置完成后保存关闭。

3.重启SQL Server服务。

拓展资料:

SQL Server 是一个关系数据库管理系统。它初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了个OS/2版本。

在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNⅨ作系统上的应用。

SQL Server 2000 是Microsoft 公司推出的SQL Server数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。

SQL Server占用内存过高,什么原因导致的,用什么方法可以解决

SQL Server占用内存过高的原因是SQL Server本身内存回收机制做的不好。SQL Server运行越久,占用内存会越来越大。

解决方法:

1.在程序里面启动SQL Server 2008,系统登录,右键点击服务名,选择“属性”。

2.在弹出的窗体里面,选择内存,在此红色框内就可以看到内存默认设置,此时可以根据自己实际需求进行估算后,进行设置,设置完成后保存关闭。

3.重启SQL Server服务。

拓展资料:

SQL Server 是一个关系数据库管理系统。它初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了个OS/2版本。

在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNⅨ作系统上的应用。

SQL Server 2000 是Microsoft 公司推出的SQL Server数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。

SQL Server对服务器内存的使用是有多少内存就占用多少内存,只有在服务器内存使用快满时,才会释放一点已经占用的内存,所以SQL Server 运行越久,占用内存越大。

查看内存状态:

这些内存一般都是Sql Server运行时候用作缓存的:

1. 数据缓存:执行个查询语句,Sql Server会将相关的数据页(Sql Server作的数据都是以页为单位的)加载到内存中来, 下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。

2.执行命令缓存:在执行存储过程,自定函数时,Sql Server需要先二进制编译再运行,编译后的结果也会缓存起来, 再次调用时就无需再次编译。

清除SQL Server服务器内存的方法:

方法一.清除所有缓存语句

DBCC DROPCLEANBUFFERS

方法二.调整可使用物理内存

1.选择服务器属性

2.把服务器内存改成合适的值,确定后多余的内存就会被强制释放

参考资料:百度百科 SQL Server 2012 深入解析与性能优化(第3版)

经常使用MSSQL的朋友都会发现一个小小的网站在运行若干天后MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或mssql来释放内存,有人认为是 MSSQL有内存泄露问题,其实不然,微软给我们了明确说明:在您启动SQL Server 之后,SQL Server内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降。另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB 为止。

仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。

默认情况下,SQL Server 根据作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server缓冲池就会继续增大。像在与SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配变化。

更多信息

您可以通过服务器内存小值和服务器内存值配置选项设置 SQL Server数据库引擎使用的内存(缓冲池)量的上下限。在设置服务器内存小值和服务器内存值选项之前,请查阅以下 Microsoft 知识库文章中标题为'内存'一节中的参考信息:319942 HOW TO:Determine Proper sql server(WINDOWS平台上强大的数据库平台) Configuration Settings(确定正确的 sql server(WINDOWS平台上强大的数据库平台) 配置设置)

请注意,服务器内存值选项只限制 SQL Server 缓冲池的大小。服务器内存值选项不限制剩余的未保留内存区域,sql server(WINDOWS平台上强大的数据库平台) 准备将该区域分配给其他组件,例如扩展存储过程、COM 对象、以及非共享 DLL、EXE 和 MAPI 组件。由于前面的分配SQL Server专用字节超过服务器内存值配置是很正常的。有关此未保留内存区域中分配的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:316749 PRB:在使用大量数据库时可能没有足够的虚拟内存

下面我们就来实战如何限制MSSQL内存使用:

步:打开企业管理器双击进入要修改的MSSQL.

第二步:在左侧MSSQL上点击右键,选择属性,弹出SQL Server属性(配置)对话框(打上SQL SP4补丁)

第三步:点击内存选项卡. 在这里,你会看到MSSQL默认设置为使用内存,也就是你所有的内存,根据你的需要,设置它的值(一般为物理内存-128M)和小值(一般为内存的1/4)吧.

第五步:设置完毕,重启MSSQL服务,配置即可生效!

经常使用MSSQL的朋友都会发现一个小小的网站在运行若干天后MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或mssql来释放内存,有人认为是 MSSQL有内存泄露问题,其实不然,微软给我们了明确说明:在您启动SQL Server 之后,SQL Server内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降。另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB 为止。

仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。

默认情况下,SQL Server 根据作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server缓冲池就会继续增大。像在与SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配变化。

更多信息

您可以通过服务器内存小值和服务器内存值配置选项设置 SQL Server数据库引擎使用的内存(缓冲池)量的上下限。在设置服务器内存小值和服务器内存值选项之前,请查阅以下 Microsoft 知识库文章中标题为'内存'一节中的参考信息:319942 HOW TO:Determine Proper sql server(WINDOWS平台上强大的数据库平台) Configuration Settings(确定正确的 sql server(WINDOWS平台上强大的数据库平台) 配置设置)

请注意,服务器内存值选项只限制 SQL Server 缓冲池的大小。服务器内存值选项不限制剩余的未保留内存区域,sql server(WINDOWS平台上强大的数据库平台) 准备将该区域分配给其他组件,例如扩展存储过程、COM 对象、以及非共享 DLL、EXE 和 MAPI 组件。由于前面的分配SQL Server专用字节超过服务器内存值配置是很正常的。有关此未保留内存区域中分配的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:316749 PRB:在使用大量数据库时可能没有足够的虚拟内存

下面我们就来实战如何限制MSSQL内存使用:

步:打开企业管理器双击进入要修改的MSSQL.

第二步:在左侧MSSQL上点击右键,选择属性,弹出SQL Server属性(配置)对话框(打上SQL SP4补丁)

第三步:点击内存选项卡. 在这里,你会看到MSSQL默认设置为使用内存,也就是你所有的内存,根据你的需要,设置它的值(一般为物理内存-128M)和小值(一般为内存的1/4)吧.

第五步:设置完毕,重启MSSQL服务,配置即可生效!

服务器内存占用过高如何解决?

服务器内存占用过高的解决方法:

1,首先通过任务管理器进行进程排序,查找占用内存较大的程序进程。一般占用内存较大的进程有W3WP、sqlserver、mysqld-nt.exe;

2, 站点进程w3wp 可以在cmd命令行中通过 iisapp 命令来对应是那个网站占用内存较大。可以通过设置回收时间、内存使用值或共用进程池来减少内存的占用,但是如果要保证网站的访问质量,还是建议升级至更高型号来解决;

3,数据库 sql server 也可以通过数据库的企业管理器来设置内存占用,但是如果网站程序必须要占用较大内存的话,设置后会发生页面报错、打不开等问题;

4,MYSQL本身会占用较大虚拟内存,如果不使用mysql数据库的话,可以将其停止。

如何解决SQLServer占内存过多的问题

我们需要准备的材料分别是:电脑。

1、在我的电脑中,搜索访问sql占用内存,在右侧的管理服务器中选择重新启动,重启一下IIS。

2、查看一下,sql服务仍然占用大量的内存,内存占用基本没有改变。

3、然后重启sql服务。

4、然后再重启一下sql。

5、再看一下任务管理器,就会发现内存占用量降低了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息