SQL Server 2012 を実行しており、単純な SELECT * クエリを実行すると、パフォーマンス モニターのディスク IO が 10 MB/秒未満であることがわかります。ただし、データベースのバックアップを実行すると、200 MB/秒を超える値が表示されます。
SQL Server がデータを取得するのがなぜこんなに遅いのでしょうか?
答え1
10MB/秒しか表示されない理由は、これらのパフォーマンス カウンターが、同じ時間枠内の単一のアクションではなく、1 秒から次の秒までのデータを参照するためです。そのため、クエリは 1 秒未満で 10MB を取得した可能性がありますが、パフォーマンス モニターでは 10MB/秒としてのみ記録されます。
バックアップは大量のデータを全面的に取り込むため、ディスクの最高速度で記録されます。個々のアクションのディスク IO を記録できる場合、おそらく 200 MB/秒かそれに近い値が表示されます。小さなパケットの速度を測定することはほぼ不可能であるため、データ パケットが小さい場合はさらに高くなる可能性があります。
お役に立てれば。
答え2
結局、クエリからの読み取りはすべてディスクからではなくメモリから直接行われていたことがわかりました。これを確認するには、クエリの前に次のコマンドを実行しました。
SET STATISTICS IO ON
その後、クエリを実行し、統計情報のメッセージ タブを確認しました。論理読み取りはメモリから行われ、物理読み取りはディスクから行われます。