tempdb データベース

tempdb システム データベースは、SQL Serverのインスタンスに接続されているすべてのユーザーが使用できるグローバル リソースであり、以下を保持するために使用されます。

  • グローバルまたはローカルな一時テーブル、一時ストアド プロシージャ、テーブル変数、カーソルなど、明示的に作成された一時的なユーザー オブジェクト。

  • SQL Server データベース エンジンによって作成される内部オブジェクト (たとえば、スプールや並べ替えの中間結果を格納する作業テーブル)。

  • 行のバージョン管理を伴う READ COMMITTED 分離トランザクションまたはスナップショット分離トランザクションを使用するデータベースで、データ変更トランザクションによって生成される行バージョン。

  • オンライン インデックス操作、複数のアクティブな結果セット (MARS)、AFTER トリガーなどの機能に対してデータ変更トランザクションによって生成される行バージョン。

tempdb 内の操作は、最低限必要な情報だけがログに記録されます。 これにより、トランザクションをロールバックできます。 tempdb は、SQL Serverが開始されるたびに再作成されるため、システムは常にデータベースのクリーンコピーで開始されます。 一時テーブルと一時ストアド プロシージャは、切断時に自動的に削除され、システムのシャットダウン時にアクティブな接続はありません。 そのため、tempdb には、SQL Serverのあるセッションから別のセッションに保存されるものはありません。 tempdb では、バックアップ操作と復元操作は許可されません。

tempdb の物理プロパティ

次の表は、 tempdb のデータ ファイルとログ ファイルの初期構成値の一覧です。 これらのファイルのサイズは、 SQL Serverのエディションによって多少異なる場合があります。

ファイル 論理名 物理名 ファイル拡張
プライマリ データ tempdev tempdb.mdf ディスクがいっぱいになるまで 10% 自動拡張する
ログ templog templog.ldf 自動拡張を 10% から最大 2 テラバイトに

tempdb のサイズは、システムのパフォーマンスに影響を与える可能性があります。 たとえば、tempdb のサイズが小さすぎると、データベースの自動拡張によってシステム処理が占有されすぎて、SQL Serverを開始するたびにワークロード要件をサポートする可能性があります。 tempdb のサイズを大きくすることで、このオーバーヘッドを回避できます。

tempdb でのパフォーマンスの強化

SQL Serverでは、tempdb のパフォーマンスは次の方法で向上します。

  • 一時テーブルとテーブル変数をキャッシュできます。 キャッシュを使用することで、一時オブジェクトを削除および作成する操作を非常に高速に実行でき、ページ割り当ての競合が減少します。

  • 割り当てページ ラッチ プロトコルが強化されています。 これにより、使用される UP (更新) ラッチの数が減少します。

  • tempdb に対するログ記録のオーバーヘッドが削減されています。 これにより、 tempdb ログ ファイルでのディスク I/O 帯域幅の消費量が減少します。

  • tempdb で混合ページを割り当てるアルゴリズムが改善されました。

tempdb のデータ ファイルとログ ファイルの移動

tempdb データ ファイルとログ ファイルを移動するには、「システム データベースの移動」を参照してください。

データベース オプション

次の表に、 tempdb データベースの各データベース オプションの既定値と、オプションを変更できるかどうかを示します。 これらのオプションの現在の設定を表示するには、 sys.databases カタログ ビューを使用します。

データベース オプション 既定値 変更可否
ALLOW_SNAPSHOT_ISOLATION OFF はい
ANSI_NULL_DEFAULT OFF はい
ANSI_NULLS OFF はい
ANSI_PADDING OFF はい
ANSI_WARNINGS OFF はい
ARITHABORT OFF はい
AUTO_CLOSE OFF いいえ
AUTO_CREATE_STATISTICS ON はい
AUTO_SHRINK OFF いいえ
AUTO_UPDATE_STATISTICS ON はい
AUTO_UPDATE_STATISTICS_ASYNC OFF はい
CHANGE_TRACKING OFF いいえ
CONCAT_NULL_YIELDS_NULL OFF はい
CURSOR_CLOSE_ON_COMMIT OFF はい
CURSOR_DEFAULT GLOBAL はい
データベース可用性オプション ONLINE

MULTI_USER

READ_WRITE
いいえ

いいえ

いいえ
DATE_CORRELATION_OPTIMIZATION OFF はい
DB_CHAINING ON いいえ
ENCRYPTION OFF いいえ
NUMERIC_ROUNDABORT OFF はい
PAGE_VERIFY SQL Serverの新規インストールの CHECKSUM。

SQL Serverのアップグレードの場合は NONE。
はい
PARAMETERIZATION SIMPLE はい
QUOTED_IDENTIFIER OFF はい
READ_COMMITTED_SNAPSHOT OFF いいえ
RECOVERY SIMPLE いいえ
RECURSIVE_TRIGGERS OFF はい
Service Broker のオプション ENABLE_BROKER はい
TRUSTWORTHY OFF いいえ

これらのデータベース オプションの説明は、「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 の操作