Freigeben über


tempdb-Datenbank

Die tempdb-Systemdatenbank ist eine globale Ressource, die für alle Benutzer verfügbar ist, die mit der instance von SQL Server verbunden sind und für Folgendes verwendet wird:

  • Temporäre Benutzerobjekte, die explizit erstellt werden, z. B. globale oder lokale temporäre Tabellen, temporäre gespeicherte Prozeduren, Tabellenvariablen oder Cursor.

  • Interne Objekte, die vom SQL Server Datenbank-Engine erstellt werden, z. B. Arbeitstabellen zum Speichern von Zwischenergebnissen für Spools oder Sortierung.

  • Zeilenversionen, die von Datenänderungstransaktionen in einer Datenbank generiert werden, die READ COMMITTED mit Zeilenversionsverwaltung oder Transaktionen der Momentaufnahmeisolation verwendet.

  • Zeilenversionen, die von Datenänderungstransaktionen für Funktionen, wie z. B. Onlineindexvorgänge, Multiple Active Result Sets (MARS) und AFTER-Trigger, generiert wurden.

Die Operationen in tempdb werden minimal protokolliert. Hierdurch kann für die Transaktion ein Rollback ausgeführt werden. tempdb wird jedes Mal neu erstellt, wenn SQL Server gestartet wird, sodass das System immer mit einer sauber Kopie der Datenbank beginnt. Temporäre Tabellen und gespeicherte Prozeduren werden beim Trennen der Verbindung automatisch gelöscht; es sind keine Verbindungen aktiv, wenn das System heruntergefahren wird. Daher gibt es in tempdb nie etwas, das von einer Sitzung mit SQL Server in eine andere gespeichert werden kann. Sicherungs- und Wiederherstellungsvorgänge sind in tempdb nicht zulässig.

physische Eigenschaften von tempdb

Die folgende Tabelle listet die anfänglichen Konfigurationswerte der tempdb -Daten- und Protokolldateien auf. Die Größe dieser Dateien kann sich in den verschiedenen Editionen von SQL Servergeringfügig unterscheiden.

Datei Logischer Name (logical name) Physischer Name (physical name) Dateivergrößerung (file growth)
Primäre Daten tempdev tempdb.mdf Automatische Vergrößerung um 10 Prozent, bis der Datenträger voll ist
Log templog templog.ldf Automatische Vergrößerung um 10 Prozent bis maximal 2 TB

Die Größe von tempdb kann sich auf die Leistung eines Systems auswirken. Wenn die tempdb-Größe beispielsweise zu klein ist, kann die Systemverarbeitung mit der automatischen Vergrößerung der Datenbank zu beschäftigt sein, um ihre Workloadanforderungen jedes Mal zu unterstützen, wenn Sie SQL Server. Sie können diesen Mehraufwand vermeiden, indem Sie die Größe von tempdb erhöhen.

Leistungsverbesserungen in tempdb

In SQL Server wird die tempdb-Leistung wie folgt verbessert:

  • Temporäre Tabellen und Tabellenvariablen können zwischengespeichert werden. Das Zwischenspeichern ermöglicht das sehr schnelle Ausführen von Vorgängen zum Löschen und Erstellen der temporären Objekte und reduziert das Auftreten von Seitenzuordnungskonflikten.

  • Das Latchprotokoll für Seitenzuordnungen wurde verbessert. Dadurch wird die Anzahl der verwendeten UP-Latches (Update) reduziert.

  • Der Protokollierungsaufwand für tempdb wurde reduziert. Dadurch wird die für die tempdb -Protokolldatei verwendete Datenträger-E/A-Bandbreite reduziert.

  • Der Algorithmus für die Zuordnung gemischter Seiten in tempdb wurde verbessert.

Verschieben der tempdb-Daten- und -Protokolldateien

Informationen zum Verschieben der tempdb-Daten - und Protokolldateien finden Sie unter Verschieben von Systemdatenbanken.

Datenbankoptionen

In der folgenden Tabelle wird der Standardwert für jede Datenbankoption in der datenbank tempdb aufgeführt und ob die Option geändert werden kann. Zum Anzeigen der aktuellen Einstellungen dieser Optionen verwenden Sie die Katalogsicht sys.databases .

Datenbankoption Standardwert Kann geändert werden.
ALLOW_SNAPSHOT_ISOLATION OFF Ja
ANSI_NULL_DEFAULT OFF Ja
ANSI_NULLS OFF Ja
ANSI_PADDING OFF Ja
ANSI_WARNINGS OFF Ja
ARITHABORT OFF Ja
AUTO_CLOSE OFF Nein
AUTO_CREATE_STATISTICS EIN Ja
AUTO_SHRINK OFF Nein
AUTO_UPDATE_STATISTICS EIN Ja
AUTO_UPDATE_STATISTICS_ASYNC OFF Ja
CHANGE_TRACKING OFF Nein
CONCAT_NULL_YIELDS_NULL OFF Ja
CURSOR_CLOSE_ON_COMMIT OFF Ja
CURSOR_DEFAULT GLOBAL Ja
Datenbankverfügbarkeitsoptionen ONLINE

MULTI_USER

READ_WRITE
Nein

Nein

Nein
DATE_CORRELATION_OPTIMIZATION OFF Ja
DB_CHAINING EIN Nein
ENCRYPTION OFF Nein
NUMERIC_ROUNDABORT OFF Ja
PAGE_VERIFY PRÜFSUMME für Neuinstallationen von SQL Server.

KEINE für Upgrades von SQL Server.
Ja
PARAMETERIZATION SIMPLE Ja
QUOTED_IDENTIFIER OFF Ja
READ_COMMITTED_SNAPSHOT OFF Nein
RECOVERY SIMPLE Nein
RECURSIVE_TRIGGERS OFF Ja
Service Broker-Optionen ENABLE_BROKER Ja
TRUSTWORTHY OFF Nein

Eine Beschreibung dieser Datenbankoptionen finden Sie unter ALTER DATABASE SET-Optionen (Transact-SQL).

Beschränkungen

Die folgenden Vorgänge können nicht für die tempdb-Datenbank ausgeführt werden:

  • Hinzufügen von Dateigruppen.

  • Sichern und Wiederherstellen der Datenbank.

  • Ändern der Sortierung. Die Standardsortierung entspricht der Serversortierung.

  • Ändern des Datenbankbesitzers tempdb ist im Besitz von sa.

  • Erstellen einer Datenbankmomentaufnahme.

  • Löschen der Datenbank.

  • Löschen des guest -Benutzers aus der Datenbank.

  • Aktivieren von Change Data Capture

  • Teilnehmen an der Datenbankspiegelung.

  • Entfernen der primären Dateigruppe, der primären Datendatei oder der Protokolldatei.

  • Umbenennen der Datenbank oder der primären Dateigruppe.

  • Ausführen von DBCC CHECKALLOC.

  • Ausführen von DBCC CHECKCATALOG.

  • Versetzen der Datenbank in den OFFLINE-Modus.

  • Versetzen der Datenbank oder der primären Dateigruppe in den READ_ONLY-Modus.

Berechtigungen

Jeder Benutzer ist berechtigt, temporäre Objekte in tempdb zu erstellen. Benutzer haben nur Zugriff auf ihre eigenen Objekte, es sei denn, ihnen wurden zusätzliche Berechtigungen zugewiesen. Die CONNECT-Berechtigung für tempdb kann widerrufen werden, um Benutzer daran zu hindern, die tempdb-Datenbank zu verwenden. Von diesem Schritt wird jedoch abgeraten, da einige Routinevorgänge auf die Verwendung von tempdb angewiesen sind.

SORT_IN_TEMPDB-Option für Indizes

Systemdatenbanken

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

Verschieben von Datenbankdateien

Weitere Informationen

Arbeiten mit tempdb in SQL Server 2005