日期:2014-05-18  浏览次数:20603 次

sqlserver 和 iis 两个占用的cpu 到了 50% - 90%了
网站访问速度慢,sqlserver cpu占用率高

sqlserver 和 iis 两个占用的cpu 到了 50% - 90%了

其中 sqlserver在 35% -60% 左右,事件探查器里总有sql语句在循环执行。

有什么办法解决一下吗



------解决方案--------------------
看下是个什么循环。做些什么操作。
------解决方案--------------------
一般是写法不好的SQL引起的,查对应的进程.优化程序写法,
SQL code

-- 查询使用CPU最多的语句
SELECT TOP 50
        qs.total_worker_time/qs.execution_count as [Avg CPU Time],
        SUBSTRING(qt.text,qs.statement_start_offset/2, 
            (case when qs.statement_end_offset = -1 
            then len(convert(nvarchar(max), qt.text)) * 2 
            else qs.statement_end_offset end -qs.statement_start_offset)/2) 
        as query_text,
        qt.dbid, dbname=db_name(qt.dbid),
        qt.objectid 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Avg CPU Time] DESC

------解决方案--------------------
探讨
一般是写法不好的SQL引起的,查对应的进程.优化程序写法,

SQL code

-- 查询使用CPU最多的语句
SELECT TOP 50
qs.total_worker_time/qs.execution_count as [Avg CPU Time],
SUBSTRING(qt.text,qs.statement_start_offset/2, ……

------解决方案--------------------
探讨
这个语句在 SQL SERVER 企业应用级平台上见过

在SQL 2005技术内幕上也见过

------解决方案--------------------
第一步要做的是把web和db分开
------解决方案--------------------
探讨

一般是写法不好的SQL引起的,查对应的进程.优化程序写法,
SQL code

-- 查询使用CPU最多的语句
SELECT TOP 50
qs.total_worker_time/qs.execution_count as [Avg CPU Time],
SUBSTRING(qt.text,qs.statement_start_offset/2,
……

------解决方案--------------------
我的可以执行,不过还不是很明白,努力ing~mark
------解决方案--------------------
难道楼主的环境是SQL2000?