次の方法で共有


tempdb データベース

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 データベースでは、次の操作を実行できません。

  • ファイル グループの追加。

  • データベースのバックアップまたは復元。

  • 照合順序の変更。 既定の照合順序はサーバーの照合順序です。

  • データベース所有者の変更。 tempdbsa によって所有されています。

  • データベース スナップショットの作成。

  • データベースの削除。

  • データベースからの guest ユーザーの削除。

  • 変更データ キャプチャの有効化。

  • データベース ミラーリングへの参加。

  • プライマリ ファイル グループ、プライマリ データ ファイル、またはログ ファイルの削除。

  • データベース名またはプライマリ ファイル グループ名の変更。

  • DBCC CHECKALLOC を実行しています。

  • DBCC CHECKCATALOG を実行しています。

  • データベースを OFFLINE に設定します。

  • データベースまたはプライマリ ファイル グループをREAD_ONLYに設定します。

権限

どのユーザーも tempdb で一時オブジェクトを作成できます。 ユーザーは、追加のアクセス許可を受け取らなければ、独自のオブジェクトにのみアクセスできます。 ユーザーが tempdb を使用できないようにするには、tempdb への接続アクセス許可を取り消すことができますが、一部のルーチン操作では tempdb を使用する必要があるため、これは推奨されません。

インデックスの SORT_IN_TEMPDB オプション

システム データベース

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

データベース ファイルの移動

こちらもご覧ください

SQL Server 2005 での tempdb の操作