1、查看数据库在数据缓存中占用的空间大小
select count(*)*8/1024 as 'Cached Size (MB)'
,case database_id
when 32767 then 'ResourcrDb'
else db_name(database_id)
end as 'DataBase'
from sys.dm_os_buffer_descriptors
group by db_name(database_id),database_id
order by 'Cached Size (MB)' desc
sys.dm_os_buffer_descriptors:动态管理视图,当前数据缓存中每个数据页都对应其中一行数据。
2、查询数据库脏页
select db_name(database_id) as 'DataBase',count(page_id)*8/1024 as 'Dirty Pages (MB)'
from sys.dm_os_buffer_descriptors
where is_modifyed=1
group by db_name(database_id)
order by 'Dirty Pages (MB)' desc
脏页:内存和磁盘中数据不一致
3、运行系统的最大工作线程数
select max_workers_count
from sys.dm_os_sys_info
4、当前线程数
select count(*) from sys.dm_os_workers
用尽工作线程(即出现等待类型ThreadPool时),通常是系统中有大量并发的并行执行计划的征兆(因为每个处理器使用一个线程),或者说明服务器已经到达了性能容量的极限。
每个工作线程,在64位服务器上需要2MB内存,在32位服务器上需要0.5MB内存,SqlServer在需要时才创建线程。