Question

haradago on Tue, 16 Apr 2013 06:38:56


マルチコアの場合tempdbの数をプロセッサ数に併せた方がよいとの記事を見かけますが、
特にデメリットはないのでしょうか?

当方、一時テーブルをたくさん使用する処理があり、プログラムの見直し及び
tempDBが1つのところをプロセッサ数に合わせようと考えています。

オンライン処理と夜間に大量データを書き込むバッチ処理があり、
特にバッチ処理でtempdbのサイズを超えるケースにtempdbがどのように使用されるのかを
気にしています。


なお、動作環境は以下の通りです。

Windows Server 2008 R2 Standard (64bit)
SQL Server Server 2008 Standard
プロセッサ数 4


Sponsored



Replies

MKIII on Fri, 19 Apr 2013 02:11:04


以下など参考になるかと思います。パフォーマンスを考えるのであれば、tempdbファイルのサイズは、実行する処理が必要とする十分な大きさに予めしておいた方がいいと思います。

http://blogs.msdn.com/b/jpsql/archive/2013/01/17/do-s-amp-dont-s-17-tempdb-cpu.aspx

Yoshihiro MATSUMOTO on Mon, 22 Apr 2013 12:47:43


こんにちは。

マイクロソフトからもファイル数に関してサポート情報が公開されています。

SQL Server tempdb データベース内の割り当ての競合を減らすための推奨事項
http://support.microsoft.com/kb/2154845/ja

CPU数が8以下の場合はCPUと同じ数だけデータファイルを準備いただくのがベストプラクティスとなります。

また、tempdb の用途についてはオンラインマニュアルに記載があります。

tempdb データベース
http://msdn.microsoft.com/ja-jp/library/ms190768.aspx

バッチ処理の場合、処理前のデータ取得時にソートを行ったり、結合を行ったりする場合にメモリが不足し、
tempdb が利用されることも想定されます。
MKIIIさんが回答されているように、既定のサイズではなく必要に応じて”事前に”拡張することが推奨されます。
自動拡張に任せた場合、拡張処理に時間がかかることで処理がタイムアウトしてしまうということも懸念されます。