我正在运行SQL Server 2012,并做一个简单的SELECT *查询,我可以看到,我的磁盘IO在性能监视器是<10MB /秒。 如果我做了数据库的备份,但是,我看到> 200 MB / s的值。
为什么sql server在为我检索数据时太慢?
你只能看到10MB /秒的原因是那些性能计数器从一秒到下一秒查看数据,而不是在同一个时间范围内单独行动。 所以你的查询可能已经在不到一秒的时间内拉到了10MB,但是只能以10MB /秒的速度在性能监视器中注册。
一个备份可以在整个电路板上传输大量的数据,所以它将在磁盘的全速下进行注册。 如果它能够为单个动作注册磁盘IO,那么可能会说200mb / sec或类似的东西,对于较小的数据包可能更是如此,因为速度几乎不可能测量小包。
希望这可以帮助。
事实certificate,从查询中读取的所有内容都是直接从内存中取出,而不是从磁盘中读取。 我能够告诉它的方式是在查询之前运行以下命令:
SET STATISTICS IO ON
之后,我运行了查询并查看了统计信息的消息标签。 逻辑读取来自内存,物理读取来自磁盘。