SQL Server 2005 を使用しています。最近、tempdb のサイズが大きいため、SQL Server 2005 が本番環境でクラッシュしました。1) tempdb のサイズが大きくなる理由は何ですか? 2) tempdb にあるデータを調べる方法はありますか?
4 に答える
2) tempdb にあるデータを調べる方法はありますか?
いいえ、そこに保管されていないためです。Tempdb は、サーバーを再起動するたびに削除されるなど、非常に特別な扱いを受けます。
1) tempdb のサイズが大きくなる理由は何ですか?
非効率的な SQL、メンテナンス ジョブ、または手元にあるデータのみ。明らかに、800 GB、6000 GB のデータベースは、4 GB のオンライン CRM 試行よりも多くの tempdb スペースを必要とする場合があります。絶対的にサイズを指定する必要はありません。大きいとは?小規模なサーバーで tempdb データベースを 64 GB にハードコーディングしています。
Tempdb に入る典型的な SQL は次のとおりです。
- クエリの一部として解決できない並べ替え (キーをどこかに保存する必要があります)
- 明確。double を検索するには、tempdb で返されたすべてのデータが必要です。
- 結合中に特定のポエレーションが発生する可能性があります。
- Tempdb の使用状況 (一時テーブル)。ロードとスクラブ中に数百メガバイト相当のデータを保持することが多いため、それらについて言及するだけです。
一般に、これらのクエリは、クエリ ログに大量の IO 統計があるか、単純に遅いことで見つけることができます。
とはいえ、メンテナンス計画もそこに含まれますが、それには理由があります。最後に、あなたの「大きい」はおそらく私のものであり、「小さいことに言及する価値さえありません」。それは本当にあなたが何をするかによって異なります。クエリ トレース ツールを使用して、時間がかかるものを見つけます。
物理的には、Tempdb の処理は非常に特殊です。SQL サーバーは、必要がない場合はファイルに書き込みません (つまり、ファイルをメモリに保持します)。ディスクへの書き込みは、メモリ フローがオフになっている兆候です。これは、通常の db 書き込み動作とは異なります。Tempdb がオーバーフローする場合は、かなり高速な SSD に配置するのが最適です...それでも比較的小さいため、通常はそれほど高価にはなりません。
ここのクエリを使用して、tempdb の他のクエリを見つけます。基本的に、ここでは汚れた水で釣りをしているので、犯人が見つかるまで試してみる必要があります。
OKtempdbはちょっと特別なデータベースです。プロシージャなどで使用する一時オブジェクトは、ここで作成されます。したがって、アプリケーションがクエリで多数の一時テーブルを使用する場合、それらはすべてここに存在しますが、接続(spid)がリセットされた後にクリーンアップする必要があります。
tempdbを増大させる可能性のあるもう1つのことは、データベースのメンテナンスタスクですが、データベースのログファイルに大きな負担がかかります。
また、SQLサービスを再起動するたびにTempdbもクリアされます。基本的にデータベースを削除して再作成します。tempdbをそのままにしておくことについて、@ Nicに同意します。いじくり回さないでください。tempdbのスペースに問題がある場合は、通常、別の大きな問題を示しています。より多くのスペースが問題を覆い隠しますが、それは非常に長い間だけです。tempdbを使用しているドライブの空き容量はどれくらいですか?
他のことは、まだの場合は、tempdbを独自のドライブに配置してみてください。可能であれば、データとログファイルを独自のドライブに配置してください。
したがって、SQL Server /サービスを再起動しないと、ドライブの容量がすぐに不足します。
SQL Server データベースを拡張する通常の方法は、tempdb
データとログ ファイル (特にログ ファイル) を自動拡張に設定することです。SQL Server は、利用可能なすべてのディスク領域を消費するまで、ログ ファイルとデータ ファイルを完全に拡張します。
私見のベスト プラクティスは、データ ファイルの制限付き自動拡張を許可し (拡張可能なサイズに上限を設定)、ログ ファイルのサイズを修正することです。ログ ファイルに必要なサイズを把握するために、何らかの分析が必要になる場合があります。特に tempdb の場合は、復旧モデルもシンプルに設定する必要があります。