Miglioramenti di concorrenza per il database tempdb

Traduzione articoli Traduzione articoli
Identificativo articolo: 328551 - Visualizza i prodotti a cui si riferisce l?articolo.
BUG #: 362099 (RIFERIMENTO)
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando il database di tempdb viene ampiamente utilizzato, SQL Server possono verificarsi dei conflitti durante il tentativo di allocano le pagine.

Dall'output della tabella di sistema sysprocesses , potrebbero essere visualizzate la waitresource come "2: 1: 1" (PFS pagina) o "2: 1: 3" (pagina SGAM). A seconda del grado di conflitto, questo pu˛ causare anche a visualizzazione che non rispondono per brevi periodi di SQL Server.


Queste operazioni sono molto utilizzano tempdb :
  • Ripetuto di creare e tabelle di rilascio di un file temporaneo (locale o globale).
  • Variabili di tabella utilizzano tempdb per scopi di archiviazione.
  • Utilizzare le tabelle associate Cursor.
  • Tabelle di lavorare associate a una clausola ORDER BY.
  • Tabelle di lavorare associate a una clausola GROUP BY.
  • Utilizzare file associati a piani di HASH.
Uso intenso e significativo di queste attivitÓ pu˛ causare i problemi di contesa.

Cause

Durante la creazione dell'oggetto, le pagine due (2) devono essere allocate da un extent misto e assegnate il nuovo oggetto. L'indice Ŕ una pagina IAM (mappa di allocazione) e il secondo Ŕ per la prima pagina per l'oggetto. SQL Server tiene traccia del extent misti utilizzando il condivisa globale allocazione mappa (SGAM) pagina. Ogni pagina SGAM tiene traccia di circa 4 gigabyte di dati.

Durante l'allocazione di una pagina dall'extent misto, SQL Server deve analizzare nella pagina di spazio disponibile di pagina (PFS) per sapere quale pagina mista Ŕ libero di essere allocata. L'opzione PFS pagina tiene traccia delle spazio disponibile su ogni pagina, e tiene traccia di ogni pagina PFS circa 8000 pagine. Sincronizzazione appropriato viene mantenuto per modificare le pagine PFS e SGAM; e che pu˛ posto altri modificatori per brevi periodi.

Quando SQL Server esegue la ricerca di allocare una pagina mista, avvia sempre la scansione per il file stesso e la pagina SGAM. In questo modo intensa conflitti nella pagina SGAM quando pi¨ pagina allocazioni sono in corso, che pu˛ causare i problemi riportati nella sezione "Sintomi" di questo articolo.

Nota AttivitÓ di deallocazione necessario modificare anche le pagine, che possono contribuire alla contesa maggiore.

Per ulteriori informazioni sui meccanismi di allocazione utilizzati da SQL Server (SGAM, GAM, PFS, IAM), vedere la sezione "Riferimenti" in questo articolo.

Risoluzione

Per ridurre la contesa di risorse di allocazione per tempdb , in cui si verifica un utilizzo intenso, attenersi alla seguente tutte queste operazioni:
  1. Per i server che eseguono SQL Server 2000 Service Pack 3 (SP3), applicare l'hotfix 8.00.0765 o la protezione pi¨ recente correggere 8.00.0818. Per i server che eseguono SQL Server SP2, applicare l'hotfix 8.00.0702.

    Queste correzioni sono disponibili dalle seguenti posizioni:

    8.00.0765
    814916FIX: Potrebbe non riuscire agente di merge per una pubblicazione filtrata
    8.00.0818
    http://www.microsoft.com/technet/security/bulletin/MS03-031.mspx
    8.00.0702
    328551FIX: Concorrenza miglioramenti per il database tempdb
  2. Implementare il flag di traccia -T1118 .

    Nota Flag di traccia -T1118 Ŕ anche disponibile e supportata in Microsoft SQL Server 2005 e SQL Server 2008. Tuttavia, se si esegue SQL Server 2005 o SQL Server 2008, non si dispone applicare un hotfix.
  3. Aumentare il numero di file di dati di tempdb sia almeno uguale al numero di processori. Inoltre, Ŕ possibile creare i file con dimensioni uguali. Per ulteriori informazioni, vedere la sezione "Informazioni".
Nota Questa procedura si applica anche a Microsoft SQL Server 7.0. L'unica eccezione Ŕ che non vi sia alcun hotfix per SQL Server 7.0; di conseguenza, il passaggio 1 non Ŕ applicabile.

With regard to passaggio 2, l'utilizzo del flag di traccia - T1118 per Microsoft SQL Server 7.0, prima di utilizzare il flag di traccia, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
813492FIX: Crea indice si verifica un errore in SQL Server 7.0 quando Ŕ attivato il flag di traccia 1118

Informazioni sul Service pack

Per risolvere il problema, ottenere il service pack pi¨ recente per Microsoft SQL Server 2000. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
290211Come ottenere il service pack pi¨ recente per SQL Server 2000

Informazioni sull'hotfix

Hotfix 8.00.0702

La versione di lingua inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e le ore per questi file sono indicati in UTC (Coordinated Universal Time). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello Data e ora nel Pannello di controllo.
   Date         Time   Version         Size       File name
   ----------------------------------------------------------------
   30-Aug-2002  21:08                    786,432  Distmdl.ldf
   30-Aug-2002  21:08                  2,359,296  Distmdl.mdf
   09-Oct-2002  00:54                        544  Drop_repl_hotfix.sql
   02-Jul-2002  15:35  2000.80.650.0     107,088  Impprov.dll      
   19-Jul-2002  16:56                    774,516  Instdist.sql
   08-Oct-2002  23:56                     12,615  Inst_repl_hotfix.sql
   20-Aug-2002  16:24  2000.80.679.0     111,172  Logread.exe      
   07-Apr-2002  02:08  2000.80.606.0      62,024  Odsole70.dll     
   03-Jan-2002  01:59                     18,185  Qfe356326.sql
   20-Aug-2002  16:47  2000.80.679.0     135,748  Qrdrsvc.exe      
   26-Aug-2002  22:49  2000.80.679.0     406,088  Rdistcom.dll     
   04-Oct-2001  01:36                    437,302  Replcom.sql
   20-Aug-2002  16:33  2000.80.679.0     152,136  Replmerg.exe     
   19-Nov-2001  20:36                    993,945  Replmerg.sql
   05-Nov-2002  23:48  2000.80.700.0     221,768  Replprov.dll     
   04-Oct-2001  01:36                    986,906  Replsys.sql
   04-Oct-2001  01:36                    881,228  Repltran.sql
   26-Aug-2002  22:49  2000.80.679.0     283,208  Rinitcom.dll     
   16-Sep-2002  22:31                    390,045  Securityhotfix.sql
   26-Aug-2002  22:49  2000.80.679.0      28,672  Sqlagent.dll     
   26-Aug-2002  18:39  2000.80.679.0     311,872  Sqlagent.exe     
   28-Aug-2002  16:32  2000.80.679.0      49,152  Sqlagent.rll
   26-Aug-2002  22:49  2000.80.679.0      53,824  Sqlcmdss.dll     
   28-Aug-2002  16:40  2000.80.679.0      12,288  Sqlcmdss.rll
   24-Oct-2002  17:37  2000.80.695.0     176,696  Sqlmap70.dll     
   11-Nov-2002  09:52  2000.80.702.0   7,471,185  Sqlservr.exe     
   11-Nov-2002  09:51                 12,633,088  Sqlservr.pdb
   01-Nov-2002  18:56  2000.80.698.0      45,644  Sqlvdi.dll       
   01-Nov-2002  18:00  2000.80.697.0      82,492  Ssnetlib.dll     
   07-Apr-2002  02:08  2000.80.606.0      70,208  Xplog70.dll      
   07-Apr-2002  02:08  2000.80.606.0      53,828  Xpqueue.dll      
   07-Apr-2002  02:08  2000.80.606.0     156,228  Xprepl.dll       
   12-Jul-2002  01:00  2000.80.658.0     279,104  Xpstar.dll       
   16-Sep-2002  23:12  2000.80.686.0      98,872  Xpweb70.dll   
				
note
  • A causa delle dipendenze fra i file, la funzionalitÓ che contiene i file o l'aggiornamento rapido (hotfix) pi¨ recente pu˛ contenere anche ulteriori file.
  • L'hotfix 8.00.0702 Ŕ per i computer in cui Ŕ stato applicato SQL Server 2000 SP2. Se Ŕ stato installato SQL Server 2000 SP3, Ŕ necessario installare SQL Server 2000 SP3 cumulativo versione 8.00.0765.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a". Questo problema Ŕ stato innanzitutto corretto in SQL Server 2000 Service Pack 4.

Informazioni

Modo Hotfix 8.00.0702 riduce la contesa

Hotfix 8.00.0702 introduce un algoritmo round-robin per le allocazioni pagina mista. Con la correzione, il file iniziale sarÓ diverso per ogni allocazione pagina mista consecutivi (se esiste pi¨ di un file). Questo modo si evita il problema della contesa per la suddivisione del treno seguite la SGAMs nello stesso ordine ogni volta con lo stesso punto iniziale. L'algoritmo di allocazione di nuovo per SGAM Ŕ pure round robin e non rispetta il riempimento proporzionale per mantenere velocitÓ. Si consiglia di creare il database tempdb file di dati con la stessa dimensione.

Come implementazione traccia flag - T1118 riduce la contesa

Qui Ŕ elenco di come utilizzare -T1118 riduce i conflitti:
  • -T1118 Ŕ un'impostazione a livello di server.
  • Includere il -T1118 flag nei parametri di avvio di traccia per SQL Server in modo che il flag di traccia rimane attiva anche dopo SQL Server viene riciclato.
  • -T1118 rimuove quasi tutte le allocazioni di singola pagina sul server.
  • Disattivando la maggior parte delle allocazioni di singola pagina, Ŕ possibile ridurre la contesa nella pagina SGAM.
  • Con -T1118 attivato ON, quasi tutte le nuove allocazioni vengono eseguite da un GAM pagina (ad esempio 2: 1: 2) che alloca 8 pagine (1 estensione) in un momento a un oggetto invece di una singola pagina da un extent per le pagine di un oggetto, senza il flag di traccia prima otto (8).
  • Le pagine IAM vengono comunque utilizzano le allocazioni di singola pagina dalla pagina SGAM, anche con -T1118 attivato ON. Tuttavia, quando combinato con aggiornamento rapido (hotfix) 8.00.0702 e file di dati di maggiore tempdb , il risultato finale Ŕ una riduzione della contesa nella pagina SGAM. Per problemi di spazio, vedere la sezione di "Svantaggi" di questo articolo.
Nota Quando il flag di traccia 1118 Ŕ attivato per l'istanza di SQL Server 2000, potresti non essere in grado di ripristinare un database di SQL Server 7.0. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
837938╚ possibile che venga visualizzato un messaggio quando si tenta di ripristinare un backup di database SQL Server 7.0 in un'istanza di SQL Server 2000

Aumentare il numero di file di dati di tempdb con dimensioni uguali

Qualora le dimensioni del file di dati del database tempdb sono di 5 GB e la dimensione del file registro Ŕ di 5 GB, il consiglio Ŕ incrementare il singolo file di dati a 10 (ognuna di 500 MB per mantenere il ridimensionamento di uguale) e lasciare il file registro Ŕ. Il file di dati diversi su dischi separati sarebbe valida. Tuttavia, non Ŕ necessaria e possono coesistere sullo stesso disco.

Il numero ottimale dei file di dati di tempdb dipende dal grado di contesa in tempdb . Come punto di partenza, Ŕ possibile configurare il database tempdb almeno uguale al numero di processori assegnato per SQL Server. Per sistemi di fine superiori (ad esempio, 16 o 32 proc), il numero iniziale potrebbe essere di 10. Se non viene ridotta la contesa, sarÓ necessario aumentare il numero di ulteriori file di dati.

Nota Un processore dual core viene considerato due processori.

Le dimensioni dei file di dati uguale sono fondamentale in quanto l'algoritmo di riempimento proporzionale Ŕ basato sulla dimensione dei file. Se i file di dati vengono creati con dimensioni diverse, l'algoritmo di riempimento proporzionale tenta di utilizzare il file pi¨ grande pi¨ per le allocazioni GAM anzichÚ le allocazioni tra tutti i file, pertanto annullando lo scopo della creazione di pi¨ file di dati di distribuzione.

Il auto-grow dei file di dati di tempdb pu˛ inoltre interferire con l'algoritmo di riempimento proporzionale. Di conseguenza, potrebbe essere consigliabile disattivare la funzionalitÓ auto-grow per i file dati di tempdb . Disattivando l'opzione auto-grow, Ŕ necessario assicurarsi di creare i file di dati in modo che siano sufficientemente grande per impedire che verificano la mancanza di spazio su disco con tempdb il server.

Aumento del numero di dati di tempdb come file con dimensioni uguali riduce la contesa

Di seguito Ŕ un elenco di come l'aumento del numero di file di dati di tempdb con dimensioni uguali riduce la contesa:
  • Con file di dati per il database tempdb , Ŕ necessario solo una pagina GAM e una pagina SGAM per ogni 4 GB di spazio.
  • Aumentando in modo efficace del numero di file di dati con le stesse dimensioni di tempdb crea una o pi¨ pagine GAM e SGAM per ogni file di dati.
  • L'algoritmo di allocazione per GAM offre all'esterno di un extent a un'ora (otto pagine contigue) dal numero di file in un round robin durante rispettare il riempimento proporzionale. Di conseguenza, se si dispone 10 file di dimensioni uguali, la prima allocazione Ŕ da File1, il secondo da File2, il terzo da File3 e cosý via.
  • La contesa di risorse della pagina PFS Ŕ ridotta in quanto otto pagine vengono contrassegnate come completo in un momento poichÚ GAM sta allocando le pagine.

Svantaggi

Lo svantaggio solo per i requisiti menzionati in precedenza Ŕ che sarÓ presente la dimensione dei database aumenta quando sono vere le seguenti condizioni:
  • Vengono creati nuovi oggetti in un database utente.
  • Ogni nuovo oggetto occupano meno di 64 KB di spazio di archiviazione.
Se queste condizioni sono vere, Ŕ possibile allocare 64 KB (8 pagine * 8 KB = 64 KB) per un oggetto che richiede solo 8 KB di spazio, pertanto inutile spreco a 56 KB di spazio di archiviazione. Tuttavia, se il nuovo oggetto viene utilizzato pi¨ di 64 KB (8 pagine) nella durata, Ŕ presente nessun svantaggio con il flag di traccia. Di conseguenza, in uno scenario caso peggiore dei casi, potrebbe essere necessario SQL Server di allocazione delle pagine aggiuntive sette (7) durante la prima allocazione solo per nuovi oggetti mai crescere oltre la pagina uno (1).

Riferimenti

Per ulteriori informazioni sul GAM, SGAM, PFS e IAM, vedere i seguenti argomenti della documentazione in linea di SQL Server 2000:
  • "Gestione di spazio utilizzato dagli oggetti"
  • "Gestione di allocazioni di extent e spazio"
  • "Tabella e indice Architecture"
  • "Strutture di heap"

ProprietÓ

Identificativo articolo: 328551 - Ultima modifica: venerdý 13 marzo 2009 - Revisione: 12.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Chiavi:á
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbfix kbbug KB328551 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 328551
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com