我正在运行 SQL Server 2012,并执行一个简单的 SELECT * 查询,我可以看到性能监视器中的磁盘 IO 小于 10MB/s。但是,如果我备份数据库,我会看到值大于 200 MB/s。
为什么 SQL 服务器检索数据的速度这么慢?
答案1
您只能看到 10MB/秒的原因是这些性能计数器查看的是一秒到下一秒的数据,而不是同一时间范围内的单一操作。因此,您的查询可能在不到一秒的时间内提取了 10MB,但这在性能监视器中只会显示为 10MB/秒。
备份会全面提取大量数据,因此它会以磁盘的全速记录。如果它能够记录单个操作的磁盘 IO,它可能会达到 200mb/秒或类似的速度,对于较小的数据包,速度可能甚至更高,因为对于小数据包,速度几乎无法衡量。
希望这可以帮助。
答案2
事实证明,查询中的所有读取都直接来自内存,而不是磁盘。我能够判断这一点的方法是在查询之前运行以下命令:
SET STATISTICS IO ON
之后,我运行查询并查看消息选项卡中的统计信息。逻辑读取来自内存,物理读取来自磁盘。