• 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
    

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

  • 相关阅读:
    git 工作流程
    微信小程序 scroll-view 水平滚动使用
    微信小程序 tree组件
    微信小程序各类生命周期
    JS/Jquey 图片链接点击直接下载
    JS/Jquery 表单方式提交总结
    Nodejs 发送邮件 激活邮箱
    搭建Nodejs环境 创建Express应用
    break、continue、return区别
    shell(一)
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/6220573.html
Copyright © 2020-2023  润新知