SQL SERVER实际应用--谁动用了我的缓存
2012-01-10 14:31
260 查看
--查看当前缓存中哪些数据库占用了大量的资源
SELECT count(*)*8 as cached_pages_kb,CASE database_id
WHEN 32767 THEN 'ResourceDb'
ELSE db_name(database_id)
END AS Database_name
FROM sys.dm_os_buffer_descriptors
GROUP BY db_name(database_id) ,database_id
ORDER BY cached_pages_kb DESC;
--查看当前缓存中某个数据库下哪些表占用了大量的资源
SELECT count(*)*8 AS cached_pages_kb,obj.name ,obj.index_id,b.type_desc,b.name
FROM sys.dm_os_buffer_descriptors AS bd
INNER JOIN
(
SELECT object_name(object_id) AS name,index_id ,allocation_unit_id,object_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.hobt_idAND (au.type = 1 OR au.type = 3
)
UNION ALL
SELECT object_name(object_id) AS name ,index_id, allocation_unit_id,object_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.partition_id AND au.type = 2
) AS obj
ON bd.allocation_unit_id = obj.allocation_unit_id
LEFT JOIN sys.indexes b on b.object_id = obj.object_id AND b.index_id = obj.index_id
WHERE database_id = db_id()
GROUP BY obj.name, obj.index_id ,b.name,b.type_desc
ORDER BY cached_pages_kb DESC;
--Buffer Pool缓冲池里面修改过的页总数大小。这个比较容易:
SELECT count(*)*8 as cached_pages_kb,convert(varchar(5),convert(decimal(5,2),(100-1.0*(select count(*) from sys.dm_os_buffer_descriptors b where b.database_id=a.database_id and is_modified=0)/count(*)*100.0)))+'%' modified_percentage ,CASE database_id WHEN 32767 THEN 'ResourceDb' ELSE db_name(database_id) END AS Database_name
FROM sys.dm_os_buffer_descriptors a
GROUP BY db_name(database_id) ,database_id
ORDER BY cached_pages_kb DESC;
SELECT count(*)*8 as cached_pages_kb,CASE database_id
WHEN 32767 THEN 'ResourceDb'
ELSE db_name(database_id)
END AS Database_name
FROM sys.dm_os_buffer_descriptors
GROUP BY db_name(database_id) ,database_id
ORDER BY cached_pages_kb DESC;
--查看当前缓存中某个数据库下哪些表占用了大量的资源
SELECT count(*)*8 AS cached_pages_kb,obj.name ,obj.index_id,b.type_desc,b.name
FROM sys.dm_os_buffer_descriptors AS bd
INNER JOIN
(
SELECT object_name(object_id) AS name,index_id ,allocation_unit_id,object_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.hobt_idAND (au.type = 1 OR au.type = 3
)
UNION ALL
SELECT object_name(object_id) AS name ,index_id, allocation_unit_id,object_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.partition_id AND au.type = 2
) AS obj
ON bd.allocation_unit_id = obj.allocation_unit_id
LEFT JOIN sys.indexes b on b.object_id = obj.object_id AND b.index_id = obj.index_id
WHERE database_id = db_id()
GROUP BY obj.name, obj.index_id ,b.name,b.type_desc
ORDER BY cached_pages_kb DESC;
--Buffer Pool缓冲池里面修改过的页总数大小。这个比较容易:
SELECT count(*)*8 as cached_pages_kb,convert(varchar(5),convert(decimal(5,2),(100-1.0*(select count(*) from sys.dm_os_buffer_descriptors b where b.database_id=a.database_id and is_modified=0)/count(*)*100.0)))+'%' modified_percentage ,CASE database_id WHEN 32767 THEN 'ResourceDb' ELSE db_name(database_id) END AS Database_name
FROM sys.dm_os_buffer_descriptors a
GROUP BY db_name(database_id) ,database_id
ORDER BY cached_pages_kb DESC;
相关文章推荐
- SQL SERVER和Oracle中in查询在实际中的应用
- SQL SERVER 2005 分区表实际应用例子
- 菜鸟-手把手教你把Acegi应用到实际项目中(7)-缓存用户信息
- redis 实际应用中的缓存作用
- 片段缓存的实际应用、延迟加载及Eazy类库
- SQL SERVER 2005 分区表实际应用例子
- SQL SERVER 2005 分区表实际应用例子
- 缓存策略在工作上的实际应用
- MySQL 查询缓存的实际应用代码示例
- SQL SERVER 2005 分区表实际应用例子
- 片段缓存的实际应用、延迟加载及Eazy类库
- 自己封装的一个iphone上的缓存,支持内存缓存以及磁盘缓存,实际项目已经应用。
- Memcached 缓存系统的-介绍、安装以及应用
- web应用中使用缓存提升性能的8种武器
- NSString字符串的实际应用
- ASP.NET缓存Cache的应用-提高数据库读取速度
- CI和Smarty整合并且前后台加载不同配置文件使前台应用Smarty缓存后台不应用
- Spring AOP的实际应用
- SQL Server 中 自定义函数 和 游标 应用的经典案例
- spring Task定时器的实际应用(重要)