小编Bob*_*ers的帖子

尽管 cpu_time 和逻辑读/写非常低,但存储过程仍超时

我正在本地开发一项使用 SQL Server Express 作为数据库的服务。我看到奇怪的行为,存储过程连续执行多次(使用不同的参数),并且在几次成功调用(每次调用大约 1 秒)之后,它开始超时。

rpc_completed 事件显示以下信息:

CPU时间 逻辑读取数 期间 结果
984000 15244 1048445 好的
63000 8543 75841 好的
531000 1782 30036796 中止
0 2 30003296 中止
15000 820 29995839 中止
0 2 30010495 中止

四个中止的事件是完全相同的命令+参数的重试。

这里发生了一些奇怪的事情:

  • cpu_time始终低于 1 秒,即使duration跳至 30 秒
  • 两个中止的事件显示 0cpu_time并且仅显示 2 logical reads(应该是数千)

这只是一个在开发机器上运行的简单 SQL Express 实例,没有进行任何其他操作。整个数据库只有几 MB,因此很难想象这些命令的成本会稍微昂贵。所以我不确定为什么服务器突然开始在这些命令上超时(虽然显然几乎没有做任何工作)。

知道这是怎么回事吗?

更新1:

  • 稍后我从查询窗口运行了失败的命令,它在 1 秒内成功执行。所以这并不是一个本质上昂贵的命令。
  • 整个数据库只有大约 5000 行。
  • 该命令仅引用 6 个表。

该命令如下所示:

declare @p1 KeyType
insert into @p1 values (1234,2345) …
Run Code Online (Sandbox Code Playgroud)

sql-server extended-events sql-server-express

2
推荐指数
1
解决办法
302
查看次数