1 SQL CPU 经常高达 99% 需要一段时间后才能恢复到正常
2 有时为SQL 与文件同步进程各占50%
3 当将网络断开后,单独访问时也有CPU 高达100%的情况,但没有网络连接时那么频繁。
4 将数据库与OA文件复制到别的电脑上后再访问时情况正常(此时只有一个访问量)
5 SQL企业管理器里有部份系统数据库没有显示此数据库上有分发与复制,
此系统上还有一个联想的同件同步程序客户的情况是这样,分内网外网两台服务器,不同的客户端访问不同的服务器,
外网是分发与复制主服务器(也就是现在出问题的服务器),目前内网情况还算稳定,外网这台服务器出现上述问题。 请问,上述的问题该怎么样分析到底问题出在哪里?
2 有时为SQL 与文件同步进程各占50%
3 当将网络断开后,单独访问时也有CPU 高达100%的情况,但没有网络连接时那么频繁。
4 将数据库与OA文件复制到别的电脑上后再访问时情况正常(此时只有一个访问量)
5 SQL企业管理器里有部份系统数据库没有显示此数据库上有分发与复制,
此系统上还有一个联想的同件同步程序客户的情况是这样,分内网外网两台服务器,不同的客户端访问不同的服务器,
外网是分发与复制主服务器(也就是现在出问题的服务器),目前内网情况还算稳定,外网这台服务器出现上述问题。 请问,上述的问题该怎么样分析到底问题出在哪里?
解决方案 »
- 这么简单的函数怎么写不 明白呢????????????
- 大家做系统,一般设置引用完整性吗?比如级联删除,级联修改等.还是在前台程序中实现引用的完整性呀?
- 求一SQL语句,马上结贴??????????
- (collation)字符集排序規則不一樣時,怎么進行相等比較啊?
- 不相信没人能做出来,共80分求解,函数
- SQL08关于索引的问题。请大家过来讨论下指点下.
- 求一个sql查询语句,谢过了
- slq server2008 ip连接问题
- 关于访问远程服务器的。
- 救命!有谁知道Win2000Server下怎样用bcb连接到SQL2000?
- SQL Server Management Studio Express 2008 中如何设置快捷键啊?
- 当数据库的数据存满一个硬盘,数据库把接下来的数据存放到另一个硬盘上.如何实现
里面是有一个存储过程被频繁使用到的。cpu最高达2000多,
--
CREATE proc WIT_OA_Article_GetByObjectOnTop
@ModuleID int,
@UserID int,
@DptIDList nvarchar(3000),
@DutyIDList nvarchar(3000),
@topID int
as
declare @Sqlstring nvarchar(3000)
--赋初始值
if @DptIDList = ''
begin
set @DptIDList='0'
end
if @DutyIDList = ''
begin
set @DutyIDList='0'
end
--选择新闻
set @Sqlstring = 'SELECT DISTINCT top '+CAST(@topID as nvarchar)+'
n.[ItemID],
n.Title,
tu.RealName as RealName,
tu.loginname as loginname,
n.CreateDate
FROM WIT_OA_Article n
inner join WIT_OA_ArticleObject nto on n.[ItemID] = nto.ArticleID
left join rb_Users tu on tu.userid=n.userID
where
n.moduleID = ' + CAST(@ModuleID as nvarchar) + '
AND
(
(n.type = 1 and nto.objectID = '+CAST(@userID as nvarchar)+')
or
(n.type = 3 and nto.objectID in ('+ @DptIDList +'))
or
(n.type = 2 and nto.objectID in ('+ @DutyIDList +'))
)
order by n.[ItemID] desc' ---
WIT_OA_ArticleObject 表里ArticleID有索引,objectID也有索引 (2百多万数据)
WIT_OA_Article表ItemID是主键(5万多数据)
rb_Users 表 userid 是主键 (5千多数据)占CPU高的这个存储过程为如上,各位给看看还能怎么优化 ?
这个是我去年给优化过了的
--TRY:
CREATE proc WIT_OA_Article_GetByObjectOnTop
@ModuleID int,
@UserID int,
@DptIDList nvarchar(3000),
@DutyIDList nvarchar(3000),
@topID int
as
declare @Sqlstring nvarchar(4000) --选择新闻
set @Sqlstring = 'SELECT DISTINCT top '+CAST(@topID as nvarchar)
SET @Sqlstring =@Sqlstring+'FROM
(
SELECT
n.[ItemID],
n.Title,
tu.RealName as RealName,
tu.loginname as loginname,
n.CreateDate
FROM WIT_OA_Article n
INNER join WIT_OA_ArticleObject nto ON n.[ItemID] = nto.ArticleID
LEFT join rb_Users tu ON tu.userid=n.userID
WHERE n.moduleID = ' + CAST(@ModuleID as nvarchar) + '
AND (n.type = 1 and nto.objectID = '+CAST(@userID as nvarchar)+') ' IF @DutyIDList<>''
SET @Sqlstring =@Sqlstring+' UNION ALL SELECT
n.[ItemID],
n.Title,
tu.RealName as RealName,
tu.loginname as loginname,
n.CreateDate
FROM WIT_OA_Article n
INNER join WIT_OA_ArticleObject nto ON n.[ItemID] = nto.ArticleID
LEFT join rb_Users tu ON tu.userid=n.userID
WHERE n.moduleID = ' + CAST(@ModuleID as nvarchar) + '
AND (n.type = 2 and nto.objectID in ('+ @DutyIDList +') '
IF @DptIDList<>''
SET @Sqlstring =@Sqlstring+' UNION ALL SELECT
n.[ItemID],
n.Title,
tu.RealName as RealName,
tu.loginname as loginname,
n.CreateDate
FROM WIT_OA_Article n
INNER join WIT_OA_ArticleObject nto ON n.[ItemID] = nto.ArticleID
LEFT join rb_Users tu ON tu.userid=n.userID
WHERE n.moduleID = ' + CAST(@ModuleID as nvarchar) + '
AND (n.type = 3 and nto.objectID in ('+ @DptIDList +') ' SET @Sqlstring =@Sqlstring+'
) tmp
order by [ItemID] desc'
一般CPU 比较大 都是 IO读写的问题