-查询数据库的连接数
select count(*)从哪里master.dbo.sysprocesses DBID = db_id()
-前10种等待类型
选择前10 * sys.dm_os_wait_stats
通过wait_time_ms倒序
SELECT * FROM sys.dm_os_wait_stats哪里wait_type like'pagelatch %
或wait_type like'lazywriter_sleep %
CPU的压力
选择scheduler_id,current_tasks_count,runnable_tasks_count
从sys.dm_os_schedulers
在scheduler_id<255
-最差的前10个使用查询
选择前10 procedurename = t.text,
executioncount = s.execution_count,
avgexecutiontime =空(s.total_elapsed_time / s.execution_count,0),
avgworkertime = s.total_worker_time / s.execution_count,
totalworkertime = s.total_worker_time,
maxlogicalreads = s.max_logical_reads,
maxphysicalreads = s.max_physical_reads,
maxlogicalwrites = s.max_logical_writes,
creationdatetime = s.creation_time,
callspersecond =空(s.execution_count / DateDiff(第二,s.creation_time,getdate()),0)
从sys.dm_exec_query_stats S
交叉应用sys.dm_exec_sql_text(s.sql_handle)T为
s.max_physical_reads desc
选择和(signal_wait_time_ms)作为total_signal_wait_time_ms信号总等待时间,
为和等待时间(wait_time_ms - signal_wait_time_ms)作为resource_wait_time_ms资源,
(signal_wait_time_ms总和)/(wait_time_ms总和)×1×100 { signal_wait_percent信号等,
和(wait_time_ms - signal_wait_time_ms)/(wait_time_ms总和)×1×100 { resource_wait_percent当等待资源
从sys.dm_os_wait_stats
信号等待时间太长,等待资源,所以您的CPU目前是瓶颈。
-查看流程执行的SQL语句
如果(select count(*)从主。dbo。执行)> 500
开始
选择文本、跨应用master.sys.dm_exec_sql_text(a.sql_handle)从master.sys.sysprocesses一
终点
选择文本,从一个master.sys.sysprocesses A.
交叉应用master.sys.dm_exec_sql_text(a.sql_handle)
在a.spid = 51
DBCC inputbuffer(53)
结核病
作为
(
选择blocking_session_id,
session_id,db_name(database_id)为dbname,文本从master.sys.dm_exec_requests一
交叉应用master.sys.dm_exec_sql_text(a.sql_handle)
),
TB1为
(
选择A,login_time,program_name,client_interface_name,login_name,cpu_time,memory_usage8 as'memory_usage(KB),
total_scheduled_time,读,写,logical_reads
从结核内加入master.sys.dm_exec_sessions B
在a.session_id = b.session_id
)
Select a.*, connect_time, client_tcp_port, client_net_address from tb1 a inner join master.sys.dm_exec_connections B
当前的进程数
SELECT * FROM master.dbo.sysprocesses
由CPU倒序
-查看当前活动中的进程数
sp_who活跃
-由于连接未释放,查询是否过高导致CPU丢失
SELECT * FROM master.dbo.sysprocesses
那里的SPID > 50
和waittype = 0x0000
时间= 0
状态= 'sleeping
和last_batch < DateAdd(分钟,- 10,getdate())
和login_time < DateAdd(分钟,- 10,getdate())
-强制释放空连接
select'kill + RTrim(SPID)从master.dbo.sysprocesses
那里的SPID > 50
和waittype = 0x0000
时间= 0
状态= 'sleeping
和last_batch < DateAdd(分钟,- 60,getdate())
和login_time < DateAdd(分钟,- 60,getdate())
-查看当前会话和占用最高CPU资源的执行语句(及时CPU)
选择SPID,CMD,CPU,physical_io,memusage,
(选择前1 {文字}::fn_get_sql(sql_handle))sql_text
从主CPU执行的顺序,降序,physical_io desc
-看看缓存中的小可重用查询,这些查询占用大内存查询(未在当前缓存中释放)——全局
选择前100 usecounts,objtype,p.size_in_bytes,{ } { }的SQL文本。
从sys.dm_exec_cached_plans P外应用sys.dm_exec_sql_text(p.plan_handle)SQL
为了usecounts,p.size_in_bytes desc
选择前25 qt.text,qs.plan_generation_num,qs.execution_count,DBID,objectid
从sys.dm_exec_query_stats QS
交叉应用sys.dm_exec_sql_text(sql_handle)QT
在plan_generation_num > 1
为了qs.plan_generation_num
选择前50 qt.text作为sql_text,总和(QS。total_worker_time)作为total_cpu_time,
和(QS。execution_count)作为total_execution_count,
和(QS。total_worker_time) /总和(QS。execution_count)作为avg_cpu_time,
计数(*)为number_of_statements
从sys.dm_exec_query_stats QS
交叉应用sys.dm_exec_sql_text(QS。sql_handle)QT
集团通过qt.text
为了total_cpu_time降序统计总的CPU时间
通过avg_cpu_time倒序统计平均单查询的CPU时间
-计算运行状态中工作进程的个数
select count(*)为workers_waiting_for_cpu,s.scheduler_id
从sys.dm_os_workers O
内部联接sys.dm_os_schedulers S
在o.scheduler_address = s.scheduler_address
和s.scheduler_id<255
在o.state = 'runnable
集团通过s.scheduler_id
表空间大小查询
创建表# TB(表名称举例,记录编号int,储备空间varchar(100),利用空间的varchar(100),索引使用varchar varchar(100),未使用的空间varchar(100)。
插入# TB exec sp_msforeachtable'exec sp_spaceused
SELECT * FROM #结核病
选择
表名,
记录数,
铸造(LTrim(RTrim(替换(替换('kb ',')))为int) / 1024 MB预留空间,
铸造(LTrim(RTrim(替换(替换('kb ',')))为int) / 1024使用空间MB,
铸造(LTrim(RTrim(替换(替换('kb ',')))为int) / 1024 / 1024 GB的使用空间,
铸造(LTrim(RTrim(替换(替换('kb ',')))为int) / 1024使用空间MB指数,
铸造(LTrim(RTrim(替换(替换('kb ',')))为int) / 1024不使用空间MB
从#结核病
在铸造(LTrim(RTrim(替换(替换(空间,'kb ','))为int) / 1024 > 0
通过记录数倒序
通过使用空间MB desc
表#结核病
-由于连接未释放,查询是否过高导致CPU丢失
SELECT * FROM master.dbo.sysprocesses
那里的SPID > 50
和waittype = 0x0000
时间= 0
状态= 'sleeping
和last_batch < DateAdd(分钟,- 10,getdate())
和login_time < DateAdd(分钟,- 10,getdate())
-强制释放空连接
select'kill + RTrim(SPID)从master.dbo.sysprocesses
那里的SPID > 50
和waittype = 0x0000
时间= 0
状态= 'sleeping
和last_batch < DateAdd(分钟,- 60,getdate())
和login_time < DateAdd(分钟,- 60,getdate())
查看当前会话和占用最高CPU资源的执行语句(及时CPU)
选择SPID,CMD,CPU,physical_io,memusage,
(选择前1 {文字}::fn_get_sql(sql_handle))sql_text
从主CPU执行的顺序,降序,physical_io desc
查看缓存中可占用大内存查询(未在当前缓存中释放)的可重用查询的少数数量——全局
选择前100 usecounts,objtype,p.size_in_bytes,{ } { }的SQL文本。
从sys.dm_exec_cached_plans P外应用sys.dm_exec_sql_text(p.plan_handle)SQL
为了usecounts,p.size_in_bytes desc
选择前25 qt.text,qs.plan_generation_num,qs.execution_count,DBID,objectid
从sys.dm_exec_query_stats QS
交叉应用sys.dm_exec_sql_text(sql_handle)QT
在plan_generation_num > 1
为了qs.plan_generation_num
选择前50 qt.text作为sql_text,总和(QS。total_worker_time)作为total_cpu_time,
和(QS。execution_count)作为total_execution_count,
和(QS。total_worker_time) /总和(QS。execution_count)作为avg_cpu_time,
计数(*)为number_of_statements
从sys.dm_exec_query_stats QS
交叉应用sys.dm_exec_sql_text(QS。sql_handle)QT
集团通过qt.text
为了total_cpu_time降序统计总的CPU时间
通过avg_cpu_time倒序统计平均单查询的CPU时间
-计算运行状态中工作进程的个数
select count(*)为workers_waiting_for_cpu,s.scheduler_id
从sys.dm_os_workers O
内部联接sys.dm_os_schedulers S
在o.scheduler_address = s.scheduler_address
和s.scheduler_id<255
在o.state = 'runnable
集团通过s.scheduler_id
选择creation_time n'statement编译时间
last_execution_time n'last执行时间
total_physical_reads n'physics读取时间总数
total_logical_reads / execution_count n'per逻辑读取次数
total_logical_reads n'logic读取时间总数
total_logical_writes n'logic写时代的总数
execution_count n'execution时代
CPU的总时间ms'used total_worker_time / 1000 N
在total_elapsed_time / 1000 n'is MS总时间
(total_elapsed_time / / 1000 execution_count)n'average时间
子串(st.text,(QS。statement_start_offset / 2)+ 1,
((statement_end_offset案例
当数据长度(1 st.text)
其他qs.statement_end_offset结束
QS。statement_start_offset) / 2)+ 1)n'execution声明
从sys.dm_exec_query_stats QS
交叉应用sys.dm_exec_sql_text(QS。sql_handle)ST
在子(st.text,(QS。statement_start_offset / 2)+ 1,
(案例statement_end_offset
当数据长度(1 st.text)
其他qs.statement_end_offset结束
QS。statement_start_offset) / 2)+ 1)不喜欢%提取%
为了total_elapsed_time / execution_count desc