tempdbがいっぱいになるのはなぜですか?
質問者:RemonaOuviña|最終更新日:2020年1月3日
カテゴリ:テクノロジーおよびコンピューティングデータベース
Tempdb full –一般的なシナリオ
これはディスクスペースアラートで終了し、サーバーの問題を引き起こす可能性があります。多くのSQLServerデータベース管理者は、 tempdbを縮小することが非常に難しいと感じた場合、すぐにサーバーの再起動を選択します。したがって、ディスク容量のアラートが停止し、サーバーの問題も停止します。Tempdbには、ユーザーオブジェクト(一時テーブル、テーブル変数)と内部オブジェクト(ハッシュテーブル、ビットマップなど)が含まれています。多数の一時テーブルを作成したためにtempdbがいっぱいになった場合は、それらを削除するだけです。内部オブジェクトが原因でいっぱいになる場合は、クエリプランで使用されている大量のSORT / HASHが原因である可能性があります。
同様に、なぜtempdbがスペースを解放しないのですか?デフォルトでは、ファイルのMAXSIZEがUNLIMITEDに設定されているため、スペースが必要になるとtempdbデータベースは自動的に拡張されます。したがって、 tempdbを含むディスク上のスペースが使い果たされるまで、 tempdbは増大し続ける可能性があります。 tempdbのサイズを制限すると、データベースのディスク容量が不足する可能性があります。
また、tempdbがいっぱいになるのを防ぐにはどうすればよいですか?
tempdbがスペース不足になるのを防ぐためのヒント:
- tempdbを自動拡張に設定します。
- ディスクに十分な空き容量があることを確認してください。
- 初期サイズを適度に設定してください。
- 可能であれば、tempdbを別のディスクに配置します。
- 大きくて重いクエリをバッチ処理します。
- すべてのストアドプロシージャ、カーソルなどに効率的なコードを記述してみてください。
tempdbとは何ですか?
Tempdbは、以下を保持するために使用されます。グローバルまたはローカルの一時テーブルとインデックス、一時ストアドプロシージャ、テーブル変数、テーブル値関数で返されるテーブル、カーソルなど、明示的に作成される一時ユーザーオブジェクト。データベースエンジンによって作成される内部オブジェクト。
19関連する質問の回答が見つかりました
SQL Server TempDBの完全な問題を修正するにはどうすればよいですか?
方法2の解決策
- 適度なサイズのTempdbをRAMに入れます(sp_configure'temp '、10)。
- サーバーを停止/開始します。
- Tempdbに使用されていたデバイスを削除します。
- マスターがデフォルトのデバイスであることを確認してください。
- TempdbをRAMから削除します(sp_configure'temp '、0)。
- サーバーを停止/開始します。そしてブーム!
SQL Server TempDBがいっぱいになった場合はどうすればよいですか?
TempDBのは、自動拡張するように設定されているとTempDBのための最大サイズを設定しないことを確認します。現在のドライブがいっぱいで自動拡張イベントを許可できない場合は、より大きなドライブを配置するか、別のデバイスのTempDBにファイルを追加します(以下で説明するようにALTER DATABASEを使用して、それらのファイルを自動拡張できるようにします。
TempDBをどのように縮小しますか?
SSMSを使用してTempDBを縮小する
TempDBを右クリックして、[タスク]に移動します。タスクリストで[縮小]をクリックすると、データベースまたはファイルを選択できます。データベースとファイルの両方のオプションは、前に説明したDBCCSHRINKDATABASEおよびDBCCSHRINKFILEコマンドに似ています。 tempdbが非常に大きくなるのはなぜですか?
Tempdbの増加は主にクエリのパフォーマンスの低下が原因であるため、SQLプロファイラーを使用し、Durationでフィルター処理して、実行にx秒以上かかるストアドプロシージャがあるかどうかを判断できます。 SPイベントクラスにのみ関心があるはずです。
リセットせずにTempDBを減らすにはどうすればよいですか?
SQLServerを再起動せずにtempdbを縮小する
- まず、簡単な方法です。言及する価値があります。
- DBCCDROPCLEANBUFFERS。クリーンなバッファをクリアします。
- DBCCFREEPROCCACHE。
- DBCCFREESYSTEMCACHE。
- DBCCFREESSESSIONCACHE。
- ..そして最後に、DBCCSHRINKFILE。
- データベースファイルの縮小について一言。
SQL ServerでTempDBの初期サイズを変更するにはどうすればよいですか?
それを使用したくない場合は、 TempDBデータベースを右クリックして、そこで「初期サイズ」設定を変更します。どちらの方法でも、そのコマンドを発行すると、DBファイルが指定されたサイズに拡大または縮小されます。
TempDBのサイズを知るにはどうすればよいですか?
SSMSを使用して現在のtempdbサイズを確認するのは簡単です。 tempdbを右クリックして[プロパティ]を選択すると、次の画面が開きます。 tempdbデータベースのプロパティページには、現在のtempdbサイズが2つのデータファイルのそれぞれで4.6 GB、ログファイルで2GBと表示されます。 DMVsysにクエリを実行する場合。
TempDBは独自のドライブに配置する必要がありますか?
デフォルトでは、 TempDBファイルはSQLServerバイナリと同じドライブに配置されます。ユーザーがカスタムインストールを選択した場合でも、 TempDBは他のデータファイルと同じドライブに配置されるため、これもお勧めできません。代わりに、TempDBのデータファイルは、それぞれ専用のドライブにする必要があります。
TempDBのサイズはどのくらいですか?
デフォルトのサイズは8MBで、 SQLServerに合計64MBのTempDBスペースを提供しますが、ほとんどの実稼働環境には不十分です。
TempDBはメモリにありますか?
TempDBの操作は最小限のログに記録されますが、オブジェクトの使用は常に一時的なものであるため、オブジェクトを永続的に保持する必要はありません。結果として、メモリはデータの一時的なリポジトリでもあるため、メモリ内テクノロジの最適な候補です。
TempDBファイルを削除できますか?
すべてのtempdbファイルは起動時に再作成されます。ただし、それらは空であり、削除できます。 tempdb内の追加のファイルを削除するには、 REMOVEFILEオプションを使用してALTERDATABASEコマンドを使用します。
TempDBはどこに保存されますか?
ヒント1:クラスター内のローカルドライブにTempDBを保持する
通常、SQL Serverのクラスター化されたインスタンスでは、データベースファイルは共有ストレージ(SAN)に格納されます。ただし、SQL Server 2012以降では、 TempDBをローカルに接続されたドライブに保持できます。 TempDBでスペースを使用しているのは何ですか?
TempDBは、内部オブジェクト、行バージョン、作業テーブル、一時テーブル、およびインデックスのストアとして使用されるMicrosoft SQLServerのシステムデータベースです。 TempDBは、SQL Serverインスタンス(グローバルリソース)に接続しているすべての参加者が使用できます。
TempDBのパフォーマンスを向上させるにはどうすればよいですか?
SQL SERVER –TempDBに対して5つのパフォーマンスの最適化を行う必要があります
- 1)プリサイズTempDB。 TempDBの大きさを科学することは絶対にできません。
- 2)より高速なドライブ–SSD。言うまでもなく、Tempデータベースは可能な限り最速のドライブに配置する必要があります。
- 3)TempDBのデータファイルとログファイルを分離します。
- 4)複数のデータと単一のログファイル。
- 5)FileGrowthを大きな固定値に設定します。
TempDBなしでSQLServerを起動できますか?
私たちが利用できる唯一のオプションは、 TempDBなしで(つまり、最小限の構成で) SQL Serverを起動してから、 TempDBのデータとログファイルをサーバー上の新しいドライブに移動することでした。