Database 数据库以100%的速度运行
我的数据库服务器突然使用了100%的处理,我的站点上似乎没有任何流量。如何查看SQL Server Management Studio内部增加的流量来源?尝试检查文件中的可用空间量。很可能是SQL正在减少mdf/ldf的大小Database 数据库以100%的速度运行,database,sql-server-2005,ssms,Database,Sql Server 2005,Ssms,我的数据库服务器突然使用了100%的处理,我的站点上似乎没有任何流量。如何查看SQL Server Management Studio内部增加的流量来源?尝试检查文件中的可用空间量。很可能是SQL正在减少mdf/ldf的大小 如果您没有按固定大小而不是%增加多少可用空间,请查看sql server活动监视器,特别是cpu列。可能您有一个或多个查询运行异常。虽然我使用此查询快速检查阻塞(开销较低),但您可以使用它查看您有多少进程正在运行,每个进程的cpu时间,读取、写入和逻辑读取: ;with B
如果您没有按固定大小而不是%增加多少可用空间,请查看sql server活动监视器,特别是cpu列。可能您有一个或多个查询运行异常。虽然我使用此查询快速检查阻塞(开销较低),但您可以使用它查看您有多少进程正在运行,每个进程的cpu时间,读取、写入和逻辑读取:
;with Blockers AS
( SELECT
r.session_id AS spid
,r.blocking_session_id AS BlockingSPID
,LEFT(OBJECT_NAME(st.objectid, st.dbid),50) AS ShortObjectName
,LEFT(DB_NAME(r.database_id),50) AS DatabaseName
,s.program_name
,s.login_name
,r.cpu_time,r.reads,r.writes,r.logical_reads
,OBJECT_NAME(st.objectid, st.dbid) AS ObjectName
,SUBSTRING(st.text, (r.statement_start_offset/2)+1,( (CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset
)/2
) + 1
) AS SQLText
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
--WHERE r.session_id > 50
)
SELECT Blockers.* FROM Blockers WHERE spid!=@@SPID
处理器使用率高的一个典型原因是来自存储过程或其他方面的未优化查询。我将查看您经常运行的存储过程,并确保它们高效运行,并且正确索引 这方面的一些例子和资源: 一篇关于性能调优的文章:
有后台处理吗?备份正在运行?计划作业?其他作业均未运行。由于数据库太高,我们无法查询数据库。这个问题可能更适合serverfault.com。您是使用带有
选项(MAXRECUSRION 0)
的递归CTE,还是在循环时执行大量?可能有一个永远不会结束。如果您认为有一个进程正在疯狂运行,则始终可以发出KILL n
,其中n
是上述查询中的spid。OP states服务器突然使用了100%的处理,似乎我没有任何流量
,虽然这可能是糟糕的查询,但我认为突然
意味着这是一个严重的问题,而不是一个长期问题,通常是糟糕的查询。在服务器出现危机时,我发现活动监视器冻结了。如果发生这种情况,您通常仍然可以从我的答案中运行查询,以获得相同的信息,包括spid、阻塞信息、cpu使用率和查询文本。好的方面-活动监视器可能在内部执行类似的操作,但它需要更多的cpu来实现奇特的UI。