tempdb-Datenbank
Die tempdb-Systemdatenbank ist eine globale Ressource, die für alle Benutzer verfügbar ist, die mit der Instanz von SQL Server verbunden sind. In der Datenbank sind die folgenden Elemente enthalten:
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 von SQL Server Database Engine (Datenbankmodul) erstellt werden, z. B. Arbeitstabellen zum Speichern von Zwischenergebnissen für Spool- und Sortiervorgänge.
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 bei jedem Start von SQL Server neu erstellt, sodass das System immer mit einer bereinigten Kopie der Datenbank startet. 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 wird zwischen den einzelnen Sitzungen von SQL Server nichts in tempdb gespeichert. 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 Server geringfügig unterscheiden.
Datei |
Logischer Name (logical name) |
Physischer Name (physical name) |
Dateizuwachs |
---|---|---|---|
Primäre Daten |
tempdev |
tempdb.mdf |
Automatische Vergrößerung um 10 Prozent, bis der Speicherplatz auf dem Datenträger erschöpft ist. |
Protokoll |
templog |
templog.ldf |
Automatische Vergrößerung um 10 Prozent bis maximal 2 TB |
Die Größe von tempdb kann sich auf Leistung eines Systems auswirken. Wenn tempdb z. B. zu klein ist, kann die Systemverarbeitung mit der automatischen Vergrößerung der Datenbank ausgelastet sein, um Ihre Arbeitslastanforderungen bei jedem Start von SQL Server zu erfüllen. Sie können diesen zusätzlichen Aufwand vermeiden, indem Sie die Größe von tempdb heraufsetzen.
Leistungsverbesserungen in tempdb
Die Leistung von tempdb wurde in SQL Server folgendermaßen 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 in der tempdb-Protokolldatei verwendete Datenträger-E/A-Bandbreite reduziert.
Der Algorithmus zum Zuordnen von gemischten Seiten in tempdb wurde verbessert.
Verschieben der tempdb-Daten- und -Protokolldateien
Weitere Informationen zum Verschieben der tempdb-Daten- und -Protokolldateien finden Sie unter Verschieben von Systemdatenbanken.
Datenbankoptionen
Die folgende Tabelle nennt die Standardwerte für die einzelnen Datenbankoptionen in der tempdb-Datenbank und gibt an, ob die entsprechende Option geändert werden kann. Wenn Sie die aktuellen Einstellungen für diese Optionen anzeigen möchten, verwenden Sie die sys.databases-Katalogsicht.
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 |
ON |
Ja |
AUTO_SHRINK |
OFF |
Nein |
AUTO_UPDATE_STATISTICS |
ON |
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 |
ON |
Nein |
ENCRYPTION |
OFF |
Nein |
NUMERIC_ROUNDABORT |
OFF |
Ja |
PAGE_VERIFY |
CHECKSUM für neue Installationen von SQL Server. NONE 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).
Einschränkungen
Die folgenden Operationen können mit der tempdb-Datenbank nicht ausgeführt werden:
Hinzufügen von Dateigruppen.
Sichern und Wiederherstellen der Datenbank.
Ändern der Sortierung. Die Standardsortierung ist die Serversortierung.
Ändern des Datenbankbesitzers Der Besitzer von tempdb ist dbo.
Erstellen einer Datenbankmomentaufnahme.
Löschen der Datenbank.
Löschen des guest-Benutzers aus der Datenbank.
Aktivieren von Change Data Capture
Teilnehmen an der Datenbankspiegelung.
Wiederherstellen der primären Dateigruppe, der primären Datendatei oder der Protokolldatei.
Umbenennen der Datenbank oder 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.
Verwandte Inhalte
SORT_IN_TEMPDB-Option für Indizes
sys.master_files (Transact-SQL)
Verschieben von Datenbankdateien