我刚刚执行了一个非常快的查询,SQL Profiler 说它使用了 30.000 次读取。现在我正在查看此页面:https ://cloud.google.com/compute/docs/disks/performance并看到标准永久性磁盘具有 3000 次读取 IOPS。
这是否意味着我的查询在那里运行时需要 10 秒?或者说SQL reads
和read IOPS
意味着完全不同的事情?
我刚刚执行了一个非常快的查询,SQL Profiler 说它使用了 30.000 次读取。现在我正在查看此页面:https ://cloud.google.com/compute/docs/disks/performance并看到标准永久性磁盘具有 3000 次读取 IOPS。
这是否意味着我的查询在那里运行时需要 10 秒?或者说SQL reads
和read IOPS
意味着完全不同的事情?
Profiler 中的一次“读取”仅等同于读取一个 8kb 页面。
这并不等同于 IOPS,也不一定意味着数据是从磁盘读取的。执行读取时,只有当缓冲区缓存中不存在该页面时,SQL Server 才会从磁盘读取数据。所有数据在用于满足您的查询之前都会通过缓冲区缓存。
因此,您可以认为这个数字与磁盘 IO 无关,而是衡量从内存读取的数据量。
SQL 读取是 SQL 分析磁盘块的时候。该块中可能有 10 条记录或 100 条记录。读取量可以确定查询的写入方式。过去的例子。因为数据在内存中,所以物理读取可能为零。
IOPS 是每秒可以执行的输入和输出读写量。
参考
所以我不会说 30,000 次读取 IOPS 磁盘上的 30,000 次 SQL Server 物理读取将等于 10 秒,还有更多的环境因素在起作用。