小编rya*_*nki的帖子

相同(?)SQL Server 2005 机器;一个查询需要 2 秒,另一个需要 15 分钟

环境:

我们有两台运行 SQL Server 2005 的 32 位 Windows Server 2003 R2 机器。硬件配置是相同的服务器,具有 Xeon 5160 CPU、4GB RAM 和 13GB RAID0。未启用 AWE 和 /3GB 标志。

服务器是使用预定义的安装清单并排设置的,并且两台机器上安装的所有软件都是相同的。

我们知道要检查的每个 SQL 服务器安装设置和补丁级别都是相同的。一个区别是 TEMPDB 在快速机器上为 400MB,而在慢速机器上为 1.2GB。但是,在这两种情况下,我们都没有看到任何 TEMPDB 分配发生。

问题:

有一个存储过程,一个运行 2 秒,另一个运行 15 分钟。在额外的 15 分钟内,几乎没有磁盘活动,也没有内存使用变化,但一个 CPU 内核始终保持 100% 固定。

即使从一个数据库备份并恢复到另一个数据库,这种行为仍然存在。

由于它是一个存储过程,因此活动监视器和分析器不会向我们显示有关此高 CPU 活动在存储过程中的何处发生的任何详细信息。

问题:

我们还应该看什么?

跟进:

缓慢发生在以下游标定义的 FETCH NEXT 语句中:

DECLARE C CURSOR FOR
    SELECT X, Y
    FROM dbo.A
    WHERE X NOT IN (SELECT X FROM dbo.B)
    AND Z <=0
... …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server

12
推荐指数
3
解决办法
2030
查看次数

标签 统计

sql-server ×1

sql-server-2005 ×1