最近、SQL ServerをSSDに移動しましたが、パフォーマンスの向上はそれほど大きくありません。
SQLIOは大幅な向上(15-100倍速い)を示し、最大6GB/sのシーケンシャル読み取り/書き込み速度を実現します。
しかし、単純なクエリを実行すると、次のようになります。
select *
into table2
from table1
およそ60MB/sのようになります。 2GBテーブルが完了するまで30秒かかります。
これは正常ですか?このような単純なクエリでSSDの平均速度と見なされる速度はどれくらいですか? RAM問題、50GBのRAMであるとは思わないでください。
問題が解決しました。そのVMにIO制限がありました。
SQLIOに関しては、hyper-vにありました。
https://serverfault.com/questions/287311/does-sqlio-lie-when-run-from-a-hyper-v-guest-on-a-vhd
SQL Serverのバージョンに応じて、クエリのパフォーマンスに影響を与える可能性があるさまざまな要素があります。
待機統計分析により、現在のボトルネックが何であるかがわかります。 PAGEIOLATCH_Sが表示される場合は、読み取りが問題です。ソーステーブルでクラスター化インデックスを再構築します。 IOボトルネックが表示されない場合は、CPUにバインドされていると考えられます。1つのCPUが100%になるようにしてください(クエリがシングルスレッドで実行されている場合)。 TABLOCKヒントを追加して、並列処理を試みます。
SELECT INTOは一括ログ操作であり、TEMPDBを使用しないため、ログファイルまたはtempdbのファイル配置を調べる必要はありません。