web-dev-qa-db-ja.com

TempDBをCPUの数に等しい複数のファイルに分割する

記事 SQL Server tempdbベストプラクティスによるパフォーマンスの向上 は、tempdbをコアの数と同じ数のファイルに分割する必要があることを示唆しています。したがって、4つのコアで4つのファイルを取得します。

ファイルの数を増やすことで、SQL Serverが一度にディスクにプッシュできる物理I/O操作の数を増やすことができます。 SQL ServerがディスクレベルにプッシュダウンできるI/Oが多いほど、データベースの実行が高速になります。標準データベースでは、SQL Serverは必要な大量のデータをメモリにキャッシュできます。 tempdbは書き込みの性質が高いため、データをメモリにキャッシュする前に、ディスクに書き込む必要があります。

理論上は良さそうに聞こえますが、それは一般的な最適化として本当に良いのでしょうか? IOが非常に高い特定のシステムにのみ適用されるものですか?

8
Preet Sangha

マシンコアに対するTempDBデータファイルの数の1/4から1/2の比率が長い間推奨されていました...

しかし、今ではさらに良いガイダンスがあります。 2011年のPASSで、SQL製品サポートでトップの友人であるボブウォードは、新しい式を採用しました。コアが8個未満の場合は、#files = #coresを使用してください。 8コアを超える場合は8ファイルを使用し、インメモリ競合が発生する場合は、一度に4ファイルを追加します。 [リンク]

最後の文は常に関連しています。競合がない場合は、なぜファイルを追加するのですか?安全にプレイするために、ほとんどの場合、大部分のビルドの開始点として2〜4個のファイルを追加しますが、それを超えて、測定して反応します。

13

ほとんどの一般的なガイドラインと同様に、これは最も肯定的な見方をすると、単純化しすぎです。よくても、これは良い出発点です(1:1コアを維持していない場合):コア数の多いデータファイルの比率)。

適切な設計および適切なフォローアップ監視とベースラインの代替はありません。 tempdbに複数のデータファイルを配置する理由は、割り当てページの競合を減らして軽減するためです。この競合を監視し、それに応じてアクションを実行する方法については、多数の公開された投稿があります。以下にいくつかのリソースがあります。

TempDB競合の解消(パート1)
TempDB競合の解消(パート2)
Tempdb競合の分析
SQL Server 2012拡張イベントによるtempdb構成の最適化

しかし、あなたの質問に答えるために、これはtempdbの設定が簡単で忘れにくい部分ではありません。

10
Thomas Stringer