虽然在正常情况下,运行以下查询需要不到1秒的时间,但现在需要35到58秒。
use myOffendingDatabaseName
select count(*) from sys.partitions
我们只是想弄清楚为什么这个系统查询这么慢,因为
更多信息:
- 使用SentryOne 的计划资源管理器(我不附属)分析执行计划(在此处提供),我发现虽然一次sys.sysrowsets操作有4253估计行,但实际行是20094,这导致我过时的系统视图统计;
- 没有其他进程对 CPU 或 I/O 进行充电;
- 尽管此查询将在此数据库的sys.partitions系统视图上返回大约20.000 项的计数,但在其他服务器上,这样复杂的数据库只需不到一秒的时间;
- 在名称 SQL Server 实例上的更简单( <500 个分区)数据库上运行相同的查询所需的预期时间不到1秒。
- SQL SERVER 2014 Express (12.0.6024.0);
- 具有 16 GB 内存的Windows Server 2016(尽管 SQL Server express 版本限制为 4 GB);
你能给出一个线索吗?