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

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

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

Sql Server运行时候的缓存:
1数据缓存:执行个查询语句,Sql Server会将相关的数据页(Sql Server *** 作的数据都是以页为单位的)加载到内存中来, 下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。
2执行命令缓存:在执行存储过程,自定函数时,Sql Server需要先二进制编译再运行,编译后的结果也会缓存起来, 再次调用时就无需再次编译。

清除缓存的命令(直接执行第四个命令清除所有缓存):
DBCC FREEPROCCACHE --清除存储过程相关的缓存
DBCC FREESESSIONCACHE --会话缓存
DBCC FREESYSTEMCACHE('All') --系统缓存
DBCC DROPCLEANBUFFERS --所有缓存
注意:清除了缓存,不会释放SQL Server所占用的内存,所以需要通过修改SQL Server内存或重启SQL Server服务器来释放内存。

修改SQL Server内存:

优化:使用以下语句查找出什么语句占内存最高,针对占内存高的语句进行优化
SELECT SSSUM_EXECUTION_COUNT,
TTEXT,
SSSUM_TOTAL_ELAPSED_TIME AS '总和时间',
SSSUM_TOTAL_WORKER_TIME AS '执行耗时',
SSSUM_TOTAL_LOGICAL_READS AS '总和逻辑读数',
SSSUM_TOTAL_LOGICAL_WRITES AS '总和逻辑写'
FROM (SELECT SPLAN_HANDLE,
SUM(SEXECUTION_COUNT)SUM_EXECUTION_COUNT,
SUM(STOTAL_ELAPSED_TIME)SUM_TOTAL_ELAPSED_TIME,
SUM(STOTAL_WORKER_TIME)SUM_TOTAL_WORKER_TIME,
SUM(STOTAL_LOGICAL_READS)SUM_TOTAL_LOGICAL_READS,
SUM(STOTAL_LOGICAL_WRITES)SUM_TOTAL_LOGICAL_WRITES
FROM SYSDM_EXEC_QUERY_STATS S
GROUP BY SPLAN_HANDLE
) AS SS
CROSS APPLY SYSdm_exec_sql_text(SSPLAN_HANDLE)T
ORDER BY SUM_TOTAL_LOGICAL_READS DESC

转自: >释放服务器内存的方法可以根据服务器的 *** 作系统和具体情况进行选择,以下是一些常用的方法:
1、关闭不必要的程序和服务:在服务器运行期间,可能会打开许多不必要的程序和服务,这些程序和服务会占用服务器内存。因此,可以关闭一些不必要的程序和服务,以释放内存。可以通过任务管理器或其他系统工具来关闭这些程序和服务。
2、重启服务器:重启服务器是释放内存最简单、最直接的方法之一。重启服务器会清空内存中的所有数据,使服务器恢复到最初的状态。
3、清理内存缓存:在Linux系统中,可以通过命令行工具来清理内存缓存。例如,可以使用“echo3>/proc/sys/vm/drop_caches”命令来清理内存缓存。

(1)查看内存空间

使用“free”命令可以查看服务器的内存空间,选项“-m”表示以MB(兆字节)的数据存储单位进行显示。执行结果如下所示:

在以上输出结果中,Mem表示系统的物理内存,total表示内存的总大小(995M),used表示已经使用的空间(168M),free表示可用空间(827M)。关于其他内容读者可参考Linux帮助手册进行学习,这里就不再详细解释。

(2)查看磁盘空间

使用“df”命令可以查看服务器的磁盘空间,选项“-lh”表示利用方便阅读的数据存储单位显示本地文件系统。执行结果如下所示:

在以上输出结果中,Filesystem是文件系统,Size表示该分区的总大小,Used表示已经使用的空间,Avail表示可用空间,Use%表示已经使用的百分比,Mounted on表示挂载路径。可以看出,系统共分为3个文件系统,其中“/dev/mapper/VolGroup-lv_root”是挂载到根目录的文件系统,总大小为83G,已经使用的空间为646M。

通过上述命令可以看出,最小安装后的CentOS占用的内存和磁盘空间都非常小。用户可以根据自己的需要来手动安装软件和配置系统,避免因为大量预装软件而导致内存、磁盘等硬件资源的浪费。

大致结果类似下图:

Mem行(单位均为M):

(-/+ buffers/cache)行:

Swap行指交换分区。

实际上不要看free少就觉得内存不足了,buffers和cached都是可以在使用内存时拿来用的,应该以(-/+ buffers/cache)行的free和used来看。只要没发现swap的使用,就不用太担心,如果swap用了很多,那就要考虑增加物理内存了。

大致结果类似下图:

上方文字部分的红框为总的CPU占用百分率,下方的表格是每个进程的CPU占用率,在表格第一行可以看到红框中占用率超过了150%,这是因为服务器是多核CPU,而该进程使用了多核。

大致结果类似下图:

表格中会显示显卡的一些信息,第一行是版本信息,第二行是标题栏,第三行就是具体的显卡信息了,如果有多个显卡,会有多行,每一行的信息值对应标题栏对应位置的信息。

需要注意的一点是显存占用率和GPU占用率是两个不一样的东西,类似于内存和CPU,两个指标的占用率不一定是互相对应的。

在下面就是每个进程使用的GPU情况了。

大致结果如下图:

表格中每一行代表一个文件系统,各列意义如下:

要查看具体某个文件或者文件夹的大小的话,可以使用下面的命令:

du命令可以查看文件或文件夹的磁盘使用空间,而-h参数的意思是使用GB、MB等易读的格式。如果不带--max-depth参数,那么将循环列出文件夹下所有文件和文件夹占用的空间,带此参数,则是指定深入目录的层数。

如果要看文件夹下所有文件的大小,可以使用:

查看作者首页


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12815752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存