sqlserver 引擎下各数据库内存使用占比查询方法
1.SQL Server对系统内存的分配原则:按需分配,且不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满机器内存(并不会撑满,还是有个最大限制,比机器内存稍小),导致操作系统内存使用过高,在重启服务前,sqlserver都不会主动释放该内存,除非重启sql服务,以释放占用的内存资源 ,以下命令可释放缓存,但是不会释放已占用的内存。
执行命令:
DBCC FREEPROCCACHE #清除存储过程相关的缓存
DBCC FREESESSIONCACHE #清除会话缓存
DBCC FREESYSTEMCACHE('All') #清除系统缓存
DBCC DROPCLEANBUFFERS #清除所有缓存
2.查询引擎内存配置情况
SELECT * FROM SYS.CONFIGURATIONS where name like '%server%';
3. 使用sql命令查询方法如下:
select isnull(db_name(database_id),'ResourceDb') AS DatabaseName,CAST(COUNT(row_count) * 8.0 /(1024.0)
AS DECIMAL(28,2)) AS [size (MB) ]
from sys.dm_os_buffer_descriptors
group by database_id
order by databasename
得到结果:
4.建议给操作系统保留一定内存,并限制sqlserver最大分配内存,举例如下(主机内存2.5G,保留1G给操作系统)
sqlserver 引擎下各数据库内存使用占比查询方法
1.SQL Server对系统内存的分配原则:按需分配,且不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满...
点击下载文档
本文2024-09-22 20:30:13发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-114033.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章