SqlServer性能优化 手工性能收集动态管理视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer性能优化 手工性能收集动态管理视图相关的知识,希望对你有一定的参考价值。

动态管理视图:

 

具体的实例语句:

 --关于语句执行的基本情况
 select * from sys.dm_exec_query_stats

 --动态管理函数  需要提供参数
  select top 10 execution_count,total_worker_time,t.text,total_worker_time/execution_count    
  as avgcpu from  sys.dm_exec_query_stats as s
  cross apply sys.dm_exec_sql_text(s.sql_handle) as t
  order by avgcpu desc

  --当前正在等待cpu执行的任务数
  select runnable_tasks_count from sys.dm_os_schedulers where runnable_tasks_count>0

  --内存方面的动态管理视图
  select * from sys.dm_os_memory_cache_clock_hands where rounds_count>0
   and removed_all_rounds_count>0

 如果指定了 CROSS APPLY,在右侧的行集表达式返回一个空的行集为该行时不生成任何行,行的左侧的行集。

 --评估哪些语句浪费SQL性能
	SELECT * FROM sys.dm_exec_query_stats
	-- 所需时间除以执行次数
	select top 10 total_elapsed_time/execution_count as avgtotal,t.text  from sys.dm_exec_query_stats as  s
	--关于语句的信息
	cross apply sys.dm_exec_sql_text(s.sql_handle) as t
	order by avgtotal desc

 

	--评估数据库io 的问题
	select * from sys.dm_io_pending_io_requests  -- 挂起io的请求  视图
	select * from sys.dm_io_virtual_file_stats((select DB_ID(\'AdventureWorks2014\')),null)  --函数   返回数据和日志文件的 I/O 统计信息
	
	--说明文件是被挂起的
	select s.file_id,r.io_pending from sys.dm_io_pending_io_requests as r inner join
	sys.dm_io_virtual_file_stats((select DB_ID(\'AdventureWorks2014\')),null) as s
	 on r.io_handle=s.file_handle

 

创建一个表:

 create database  HRDB
	 go 
	 use HRDB
	 go 
	 create table t1(c1 int,c2 int)
	 go
	 insert t1 values(1,1)

 启动事物  不关闭  造成线程阻塞

begin tran
	 update t1 set c1=2 where c1=1
	 --并不结束

 另一个用户去查询表

--语句被阻塞
select * from t1

 查看系统的阻塞情况

 --查看系统阻塞的情况
	 select * from master..sysprocesses
	 select distinct
	 \'PID\'=str(s.spid,4),	
	 \'BLOCKID\'=str(s.blocked,4),
	 \'Status\' =
	 case s.status
	 when \'sleeping\' then \'Running\' 
	 when \'runnalbe\' then \'Complete\'
	 when \'suspended\' then \'Blocked\'
	 end,t.text
	 from master..sysprocesses as s cross apply sys.dm_exec_sql_text(s.sql_handle) as t
	 where s.dbid=(select DB_ID(\'hrdb\'))

 

 把事物进行提交:

commit    select * from t1

 再次运行以上的语句结果如下:

 

以上是关于SqlServer性能优化 手工性能收集动态管理视图的主要内容,如果未能解决你的问题,请参考以下文章

sql server 性能优化和日常管理维护 笔记

SQL Server管理员必备技能之性能优化

Oracle性能优化之统计信息管理_超越OCP精通Oracle视频教程培训32

SQL Server管理员必备技能之性能优化

Web项目开发性能优化解决方案

iOS 性能优化收集