Windows 2012 R2 サーバー (32 GB RAM) で SQL Server 2008 Web Edition を使用して、ASP.NET ベースの Web アプリケーションのデータを保存します。ニューステーブルとさまざまなビューを備えたいくつかのデータベースがありSqlDataReader
、さまざまな結合とフィルター条件で定期的にクエリを実行します ( 、Linq-to-SQL)。クエリ自体は長く、ドメイン固有であるため、例は省略します。
これまでのところ、すべてうまくいきました。
ここで、そのようなクエリを変更し、単純なOR
条件で拡張する必要がありました。その結果、 の読み取りと書き込みの数TempDB
が劇的に増加しました。1 分あたり 100 MB を超える 1000 回の書き込みが劇的に発生し、tempdb ファイルの合計サイズが現在 1.5 GB になることを意味します。
OR
元のクエリからフィルタ ステートメントを削除すると、TempDB
ファイル I/O は即座に正規化されます。
ただし、内部で何が起こっているのかはわかりませんTempDB
。クエリ アナライザーを数回実行して結果を比較しましたが、そのインデックス最適化の推奨事項は他のデータベースの統計に関連するものであり、効果はありませんでした。
この問題をどのように絞り込みますか?過去にそのような行動を経験した人はいますか?ニュースクエリ自体に問題がある可能性はありTempDB
ますか?それとも、自動拡張などの I/O パフォーマンスを向上させるためにデータベースのプロパティを変更するだけでよいのでしょうか?