查看数据库缓存大小

我们都知道sqlserver存在缓存机制,那么我们要想知道到底缓存了哪些数据,每个库缓存了多大的数据?

我们可以用一个DMV查看,sys.dm_os_buffer_descriptors

 select COUNT(*)*8 as KB,case database_id when 32767 then 'ResourceDb' else  DB_NAME(database_id) end dbname from sys.dm_os_buffer_descriptors 
 group by database_id

这样的话我们可以看到每个数据库缓存的数据大小,同时我们也可以根据is_modified来判断每个库的修改比例

 select COUNT(*)*8/1000 as MB,DB_NAME(a.database_id),b.weigai,COUNT(*) 总数,100-(b.weigai*1.00/COUNT(*))*100 百分比
 from sys.dm_os_buffer_descriptors a left join 
 (select COUNT(*) weigai,database_id from sys.dm_os_buffer_descriptors 
 where is_modified=0
 group by database_id) b on a.database_id=b.database_id
 group by a.database_id ,b.weigai

其中的百分比就是缓存数据修改的比例,如果百分比越接近0那说明这个库读操作越高

原文地址:https://www.cnblogs.com/jinshaohua/p/5733350.html