web-dev-qa-db-ja.com

tempdbの自動拡張のベストプラクティスは何ですか?

このインスタンスにデータベースが約15あり、データの合計が約100 GBのクライアントのサーバーがあります。データベースの1つは、sysaidアプリ用です。彼の一時dbファイルは、1つのmdf、1つのndf、そしてもちろんldfです。 mdfは他のmdfと同じドライブにあるため、ldfファイルの場合。

自動拡張のプロパティを設定すると、無制限の拡張として保持する必要があることがわかっていますが、自動拡張を%またはMBで選択する必要がある場合、何を選択すればよいですか?そして、どのように設定する数を知るのですか?

前もって感謝します!

7
sql_girl

私にとって、ベストプラクティスは、予想される拡大に対応できるように、最初はファイルのサイズを十分大きくすることです。

簡単な数値をいくつか使用してみましょう。 tempdbに割り当てた100 GBドライブ(または100 GBの共有ドライブ)があるとします。インスタンスには4つのtempdbファイルがあり、それらを最初は100 MBに設定し、一度に10 MBずつ拡張することにしました。最初は、その100 GBのドライブまたはスライスは次のようになっています(明らかに、実寸ではありません)。

enter image description here

システムがtempdbリソースを使用するにつれて、各tempdbファイルは10 MBを苦しめることによって10 MB大きくなります。いくつかの成長の後:

enter image description here

成長イベントが発生するたびに、高速になる可能性がありますが、すべての接続が強制的に待機されることに注意してください。これは、Instant File Initializationが有効になっていない場合、およびファイルが一緒に拡大するように構成されている場合に顕著になります(一部のバージョンではトレースフラグが必要ですが、これは正しいことです。他よりも大きくなる)。

ドライブの最後に到達すると、4つのファイルすべてが同時に成長しなくなりますと同時に。そして、これはビジネス継続性イベントです。 tempdbがここで大きくならない場合、アクティビティは停止します。

enter image description here

さて、この時点に達した場合は、tempdbの使用方法を変更する必要があるか、100 GBでは十分ではなく、より多くのスペースを割り当てる必要があることを認識する必要があります。ただし、ここでは単にstartにして、このサイズをtempdbの初期データファイルサイズに設定する方がよいと私は主張します。

enter image description here

まあ、技術的には、たとえば、それぞれ20 GBのサイズにして、500 MBの自動拡張を使用します。これにより、100GBのスライスがいっぱいになる前に警告を発することができますが、その間、ファイルの増加分の増分を支払う必要はありません。

結局のところ、tempdbがその領域を埋めるために大きくなる場合、それを他の目的に使用できるようにはならないのです。

どのサイズを自動成長させるべきか

マジックナンバーはありません(デフォルトは伝統的にあまりにも保守的で実用的ではありませんが、これは改善されています)。自動拡張の設定は、ディスクのパフォーマンス特性と、拡張が予想される頻度に基づいて行われます。 SSDまたは同様のものを使用していて、IFIが有効になっている場合、サイズは、スライスの最後に到達する前にどの程度の警告を出したいかにかなり関係しています。スピニードライブ、メカニカルドライブがある場合、またはIFIが有効になっていない場合は、さまざまな設定をテストして、ファイルをさまざまな量だけ拡張するのにかかる時間が、システム上のすべてのトランザクションの許容範囲を満たしていることを確認することをお勧めします。待つ。

9
Aaron Bertrand