tempdb システム データベースは、SQL Server のインスタンスに接続されているすべてのユーザーが使用できるグローバル リソースであり、次の情報を保持するために使用されます。
グローバルまたはローカルの一時テーブル、一時ストアド プロシージャ、テーブル変数、カーソルなど、明示的に作成される一時ユーザー オブジェクト。
SQL Server データベース エンジンによって作成される内部オブジェクト (たとえば、スプールまたは並べ替えの中間結果を格納する作業テーブル)。
行バージョン管理分離またはスナップショット分離トランザクションを使用して読み取りコミットを使用するデータベース内のデータ変更トランザクションによって生成される行バージョン。
オンライン インデックス操作、複数のアクティブな結果セット (MARS)、AFTER トリガーなど、機能のデータ変更トランザクションによって生成される行バージョン。
tempdb 内の操作は最小限に記録されます。 これにより、トランザクションをロールバックできます。 tempdb は、SQL Server が起動されるたびに再作成されるため、システムは常にデータベースのクリーン コピーで開始されます。 一時テーブルとストアド プロシージャは切断時に自動的に削除され、システムのシャットダウン時にアクティブな接続はありません。 そのため、 tempdb 内で SQL Server のセッション間で保存されることは決してありません。 tempdb では、バックアップ操作と復元操作は許可されません。
tempdb の物理プロパティ
次の表に、 tempdb データ ファイルとログ ファイルの初期構成値を示します。 これらのファイルのサイズは、SQL Server のエディションによって若干異なる場合があります。
ファイル | 論理名 | 現物名 | ファイル拡張 |
---|---|---|---|
プライマリ データ | tempdev | tempdb.mdf | ディスクがいっぱいになるまで 10% の自動拡張 |
ログ | templog | templog.ldf | 最大 2 テラバイトまで 10% の自動拡張 |
tempdb のサイズは、システムのパフォーマンスに影響する可能性があります。 たとえば、 tempdb のサイズが小さすぎる場合、SQL Server を起動するたびに、データベースの自動拡張によってシステム処理が占有されすぎてワークロード要件をサポートできない可能性があります。 tempdb のサイズを大きくすることで、このオーバーヘッドを回避できます。
tempdb のパフォーマンスの向上
SQL Server では、 tempdb のパフォーマンスは次のように向上します。
一時テーブルとテーブル変数はキャッシュできます。 キャッシュを使用すると、一時オブジェクトを削除して作成する操作を非常に迅速に実行でき、ページ割り当ての競合が軽減されます。
割り当てページのラッチプロトコルが改善されました。 これにより、使用される UP (更新) ラッチの数が減ります。
tempdb のログのオーバーヘッドが軽減されます。 これにより、 tempdb ログ ファイルでのディスク I/O 帯域幅の消費量が削減されます。
tempdb で混合ページを割り当てるアルゴリズムが改善されました。
tempdb データ ファイルとログ ファイルの移動
tempdb データ ファイルとログ ファイルを移動するには、「システム データベースの移動」を参照してください。
データベース オプション
次の表に、 tempdb データベースの各データベース オプションの既定値と、オプションを変更できるかどうかを示します。 これらのオプションの現在の設定を表示するには、 sys.databases カタログ ビューを使用します。
データベース オプション | 既定値 | 変更可否 |
---|---|---|
スナップショット分離を許可 | オフ | イエス |
ANSI_NULL_DEFAULT (ANSI NULL デフォルト設定) | オフ | イエス |
ANSI_NULLS | オフ | イエス |
ANSI_PADDING (ANSIのパディング) | オフ | イエス |
ANSI_WARNINGS(ANSI 警告) | オフ | イエス |
ARITHABORT | オフ | イエス |
自動クローズ | オフ | いいえ |
AUTO_CREATE_STATISTICS (自動生成統計) | オン | イエス |
自動縮小 | オフ | いいえ |
自動更新統計情報 | オン | イエス |
統計情報の非同期自動更新 | オフ | イエス |
変更追跡 | オフ | いいえ |
CONCAT_NULL_YIELDS_NULL | オフ | イエス |
コミット時にカーソルを閉じる | オフ | イエス |
既定のカーソル | グローバル | イエス |
データベースの可用性オプション | オンライン マルチユーザー 読み書き |
いいえ いいえ いいえ |
日付相関最適化 | オフ | イエス |
DB_CHAINING | オン | いいえ |
暗号化 | オフ | いいえ |
NUMERIC_ROUNDABORT | オフ | イエス |
ページ検証 (PAGE_VERIFY) | SQL Server の新規インストールの CHECKSUM。 SQL Server のアップグレードの場合は NONE。 |
イエス |
パラメータ化 | 簡単 | イエス |
QUOTED_IDENTIFIER(引用された識別子) | オフ | イエス |
読み取りコミットスナップショット | オフ | いいえ |
回復 | 簡単 | いいえ |
再帰的トリガー | オフ | イエス |
Service Broker のオプション | ENABLE_BROKER(ブローカーを有効化) | イエス |
信頼できる | オフ | いいえ |
これらのデータベース オプションの説明は、「ALTER DATABASE の SET オプション (Transact-SQL)」を参照してください。
制約
tempdb データベースでは、次の操作を実行できません。
ファイル グループの追加。
データベースのバックアップまたは復元。
照合順序の変更。 既定の照合順序はサーバーの照合順序です。
データベース所有者の変更。 tempdb は sa によって所有されています。
データベース スナップショットの作成。
データベースの削除。
データベースからの guest ユーザーの削除。
変更データ キャプチャの有効化。
データベース ミラーリングへの参加。
プライマリ ファイル グループ、プライマリ データ ファイル、またはログ ファイルの削除。
データベース名またはプライマリ ファイル グループ名の変更。
DBCC CHECKALLOC を実行しています。
DBCC CHECKCATALOG を実行しています。
データベースを OFFLINE に設定します。
データベースまたはプライマリ ファイル グループをREAD_ONLYに設定します。
権限
どのユーザーも tempdb で一時オブジェクトを作成できます。 ユーザーは、追加のアクセス許可を受け取らなければ、独自のオブジェクトにのみアクセスできます。 ユーザーが tempdb を使用できないようにするには、tempdb への接続アクセス許可を取り消すことができますが、一部のルーチン操作では tempdb を使用する必要があるため、これは推奨されません。
関連コンテンツ
sys.master_files (Transact-SQL)