小编Eve*_*zon的帖子

持续扫描需要 0 秒或 2-3 分钟

像下面这样的查询保证不返回任何行,在我们的一台服务器上需要 0 到 160 秒的任何时间:

select col1, col2, col3
from tab1
where 0 = 1
Run Code Online (Sandbox Code Playgroud)

两周前,这种情况在 48 小时内发生了六次。上周相同的查询花费了大约 0 秒。我有我们应用程序 SQL 的日志,但还没有发现任何嫌疑人。此外,我认为 top 0/where 0=1 类型查询永远不会命中数据页,所以它应该可以抵抗行/页/表级数据锁?任何(已知的)SQL 都不会触及该架构。

由于问题不一致,并且服务器负载非常重,我想在附加 SQL 探查器之前了解所发生情况背后的理论。在这些延迟期间,其他查询运行没有问题。应用程序中的一个已知问题是大量动态创建的 SQL 查询 - 在 48 小时内总共有 850k(记录)查询的大约 200k 唯一查询,这会导致这样的问题吗?

该服务器运行 SQL Server 2005 标准版、96 GB RAM、SAN 磁盘和 4 个 CPU/16 核。数据库文件和文件组得到了很好的优化,应该不会有问题(但我们正在单独研究这一点)。

非常感谢任何可以查看的指针。

编辑:完美!重播查询以添加执行计划,耗时 1 分 35 秒。这是显示查询持续时间的执行计划和屏幕截图: 查询计划

编辑 2:统计第二次运行的时间详细信息。现在似乎一直很慢,所以我们将附加分析器和性能:

SQL Server Execution Times:
   CPU time = 0 ms,  elapsed time = 97402 ms.
SQL Server parse and compile time: 
   CPU …
Run Code Online (Sandbox Code Playgroud)

sql-server

10
推荐指数
1
解决办法
2680
查看次数

标签 统计

sql-server ×1