一台SQL Server上有50多个DB,怎么样去判断哪个DB占用资源最高?
一台SQLServer上有50多个DB,怎么样去判断哪个DB占用资源最高?包括CPU,Memory,I/O....
一台SQL Server上有50多个DB,怎么样去判断哪个DB占用资源最高?包括CPU,Memory,I/O.
展开
4个回答
2013-12-13
展开全部
好像不能监控每个数据库的资源消耗,只能监控整个服务器的消耗情况。不过,通过sys.dm_exec_sessions这个视图里的cpu_time,memory_usage,reads,writes,logical_reads等,可以大概了解每个会话所消耗的资源。由于SQL Server实例上可以有多个数据库,而每个会话可以对多个数据库进行操作,所以这里的统计信息,可能是这个会话在多个数据库上消耗的资源。其实本质上,也没必要了解每个数据库消耗太多的资源,而是要了解哪些会话或者连接,消耗了最多的资源,还有哪些语句消耗了最多的资源(sys.dm_exec_query_stats)。--会话消耗的资源SELECT session_id, cpu_time, memory_usage, reads, writes, logical_reads, host_name , --客户主机 program_name --程序 FROM sys.dm_exec_sessions--最消耗资源的语句SELECT TOP 100 t.*, d.*FROM sys.dm_exec_query_stats dCROSS apply sys.dm_exec_sql_text(d.sql_handle) tORDER BY d.total_worker_time desc, --总的cpu时间 d.total_elapsed_time DESC, --总的时间,包括cpu和io的时间 d.total_physical_reads DESC --总的物理读取次数
2013-12-13
展开全部
数据库占用的内存:这个不包含即时编译生成执行计划占用的内存,个人认为可以忽略。SELECT CASE database_id WHEN 32767 THEN 'ResourceDb' ELSE db_name(database_id) END AS Database_name, count(*)AS cached_pages_count, COUNT(*)*8.0/1024/1024 as cached_pages_count_inSize_GBFROM sys.dm_os_buffer_descriptorsGROUP BY db_name(database_id) ,database_idORDER BY cached_pages_count DESC;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-13
展开全部
楼上已经给出语句查询最好资源的语句,按照这些语句可以找到是哪个DB 然后做相应的优化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-13
展开全部
IO方面可以参考我的文章: http://blog.csdn.net/dba_huangzj/article/details/8634788
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询