sqlserver 引擎下各数据库内存使用占比查询方法

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

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语句时,数据取出后,会一直占用内存,直到占满...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息