Miglioramenti di concorrenza per il database tempdb

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
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
BUG #: 362099 (RIFERIMENTO)
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 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"

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 328551 - Ultima revisione: 12/07/2015 12:27:51 - Revisione: 12.0

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

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbfix kbbug KB328551 KbMtit
Feedback