iszjw 发表于 2016-11-12 01:33:35

l server性能分析--定时收集系统运行情况

  最近要回到公司,暂时离开客户的生产数据库,不能及时得到下列数据库信息:
  1,系统运行sql语句的执行情况 2,统计每天全部表的数据变化(数据每天的增量)。
  特意写了3个job线程,在晚上业务不繁忙的时候执行,来收集系统运行情况信息,等我回来再来分析sql,同时为系统优化提供参考。
  create table tbSql([语句编译时间] datetime,[物理读取总次数] int,[每次逻辑读次数] int, [逻辑写入总次数] int,[执行次数] int,[所用的CPU总时间ms] numeric(30,3),[总花费时间ms] numeric(30,3),[平均时间ms] numeric(30,3),[执行语句] text,[收集时间] datetime,)insert into tbSqlSELECTcreation_timeN'语句编译时间',total_physical_reads N'物理读取总次数',total_logical_reads/execution_count N'每次逻辑读次数',total_logical_writes N'逻辑写入总次数', execution_countN'执行次数', total_worker_time/1000 N'所用的CPU总时间ms', total_elapsed_time/1000N'总花费时间ms', (total_elapsed_time / execution_count)/1000N'平均时间ms',SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) N'执行语句',getdate()FROM sys.dm_exec_query_stats AS qsCROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) stwhere SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text)ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) not like '%fetch%'ORDER BYtotal_elapsed_time / execution_count DESC;dbcc freeProcCache;--清理执行计划缓存
页: [1]
查看完整版本: l server性能分析--定时收集系统运行情况