Condividi tramite


Database tempdb

Il database di sistema tempdb è una risorsa globale disponibile per tutti gli utenti connessi all'istanza di SQL Server e viene usata per contenere quanto segue:

  • Oggetti utente temporanei creati in modo esplicito, ad esempio tabelle temporanee globali o locali, stored procedure temporanee, variabili di tabella o cursori.

  • Oggetti interni creati dal motore di database SQL Server, ad esempio, tabelle di lavoro per archiviare i risultati intermedi per gli spool o l'ordinamento.

  • Versioni di riga generate dalle transazioni di modifica dei dati in un database in cui viene usato il Read committed tramite isolamento del controllo delle versioni delle righe o transazioni di isolamento dello snapshot.

  • Versioni di riga generate dalle transazioni di modifica dei dati per le caratteristiche, ad esempio le operazioni sugli indici online, la caratteristica MARS (Multiple Active Result Set) e i trigger AFTER.

In tempdb viene registrato un numero minimo di operazioni Consente il rollback delle transazioni. Tempdb viene ricreato ogni volta che viene avviata SQL Server in modo che il sistema inizi sempre con una copia pulita del database. Poiché le tabelle e le stored procedure temporanee vengono eliminate automaticamente al momento della disconnessione e poiché al momento della chiusura del sistema non vi sono connessioni attive, Pertanto, non c'è mai nulla in tempdb da una sessione di SQL Server a un'altra. Le operazioni di backup e ripristino non sono consentite in tempdb.

Proprietà fisiche di tempdb

Nella tabella seguente sono elencati i valori iniziali di configurazione dei dati e dei file di log di tempdb . Le dimensioni di questi file possono variare leggermente per le diverse edizioni di SQL Server.

File Nome logico Nome fisico Aumento di dimensioni del file
Dati primari tempdev tempdb.mdf Crescita automatica del 10% fino a quando il disco risulta pieno
File di log templog templog.ldf Aumento automatico delle dimensioni del 10% fino a un massimo di 2 TB

Le dimensioni di tempdb possono influire sulle prestazioni di un sistema. Ad esempio, se le dimensioni di tempdb sono troppo piccole, l'elaborazione del sistema potrebbe essere troppo occupata con la creazione automatica del database per supportare i requisiti del carico di lavoro ogni volta che si avvia SQL Server. È possibile evitare questo sovraccarico aumentando le dimensioni di tempdb.

Miglioramenti delle prestazioni in tempdb

In SQL Server, le prestazioni di tempdb sono migliorate nei modi seguenti:

  • È possibile memorizzare nella cache tabelle temporanee e variabili di tabella. La memorizzazione nella cache consente di eseguire molto rapidamente le operazioni di eliminazione e creazione degli oggetti temporanei e di ridurre i problemi di contesa nell'allocazione delle pagine.

  • Il protocollo di latch delle pagine di allocazione è stato migliorato. In questo modo è possibile ridurre il numero di latch di aggiornamento (UP) usati.

  • L'overhead di registrazione per il database tempdb è stato ridotto. In questo modo si riduce l'utilizzo di banda per operazioni di I/O su disco nel file di log di tempdb .

  • L'algoritmo per l'allocazione di pagine miste in tempdb è migliorato.

Spostamento dei dati e dei file di log di tempdb

Per spostare i file di dati e di log tempdb , vedere Spostare i database di sistema.

Opzioni di database

La tabella seguente elenca il valore predefinito per ogni opzione di database nel database tempdb e indica se l'opzione può essere modificata. Per visualizzare le impostazioni correnti di queste opzioni, usare la vista del catalogo sys.databases .

Opzione di database Valore predefinito Modificabile
ALLOW_SNAPSHOT_ISOLATION OFF
ANSI_NULL_DEFAULT OFF
ANSI_NULLS OFF
ANSI_PADDING OFF
ANSI_WARNINGS OFF
ARITHABORT OFF
AUTO_CLOSE OFF No
AUTO_CREATE_STATISTICS ON
AUTO_SHRINK OFF No
AUTO_UPDATE_STATISTICS ON
AUTO_UPDATE_STATISTICS_ASYNC OFF
CHANGE_TRACKING OFF No
CONCAT_NULL_YIELDS_NULL OFF
CURSOR_CLOSE_ON_COMMIT OFF
CURSOR_DEFAULT GLOBAL
Opzioni relative alla disponibilità del database ONLINE

MULTI_USER

READ_WRITE
No

No

No
DATE_CORRELATION_OPTIMIZATION OFF
DB_CHAINING ON No
ENCRYPTION OFF No
NUMERIC_ROUNDABORT OFF
PAGE_VERIFY CHECKSUM per nuove installazioni di SQL Server.

NONE per gli aggiornamenti di SQL Server.
PARAMETERIZATION SEMPLICE
QUOTED_IDENTIFIER OFF
READ_COMMITTED_SNAPSHOT OFF No
RECOVERY SEMPLICE No
RECURSIVE_TRIGGERS OFF
Opzioni relative a Service Broker ENABLE_BROKER
TRUSTWORTHY OFF No

Per una descrizione di queste opzioni di database, vedere Opzioni ALTER DATABASE SET (Transact-SQL).

Restrizioni

Le operazioni seguenti non possono essere eseguite nel database tempdb :

  • Aggiunta di filegroup.

  • Backup o ripristino del database.

  • Modifica delle regole di confronto. Le regole di confronto predefinite corrispondono a quelle del server.

  • Modifica del proprietario del database. tempdb è di proprietà di sa.

  • Creazione di uno snapshot del database.

  • Eliminazione del database.

  • Eliminazione dell'utente guest dal database.

  • Abilitazione dell'acquisizione dei dati delle modifiche.

  • Partecipazione al mirroring del database.

  • Rimozione del filegroup primario, del file di dati primario o del file di log.

  • Ridenominazione del filegroup primario o del database.

  • Esecuzione di DBCC CHECKALLOC.

  • Esecuzione di DBCC CHECKCATALOG.

  • Impostazione del database su OFFLINE.

  • Impostazione del database o del filegroup primario su READ_ONLY.

Autorizzazioni

Qualsiasi utente può creare oggetti temporanei in tempdb. Gli utenti possono accedere solo ai propri oggetti, a meno che non ottengano ulteriori autorizzazioni. È possibile revocare l'autorizzazione per la connessione a tempdb per impedire a un utente di utilizzarlo, tuttavia questa operazione non è consigliabile poiché in alcune operazioni di routine è richiesto l'utilizzo di tempdb.

Opzione SORT_IN_TEMPDB per gli indici

Database di sistema.

sys.databases (Transact-SQL)

sys.master_files (Transact-SQL)

Spostare file del database

Vedere anche

Utilizzo di tempdb in SQL Server 2005