Al momento sei offline in attesa che la connessione Internet venga ristabilita

Diagnostica in SQL Server consentono di rilevare operazioni dei / o bloccate e bloccate

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 897284
Sommario
Un sistema di gestione di database (DBMS), ad esempio SQL Server, si affida la tempestività dei file input e output (i) le operazioni. Uno dei seguenti elementi può causare operazioni dei / o bloccate o bloccate e influire negativamente sulle prestazioni e tempi di risposta di SQL Server:

  • Hardware difettoso
  • Errata configurazione hardware
  • Impostazioni del firmware
  • Driver di filtro
  • Compressione
  • Bug
  • Il percorso dei / o altre condizioni
Tali problemi dei / o possono causare il seguente comportamento si verifichi:

  • Il blocco
  • Conflitto di serratura e i timeout
  • Tempo di risposta
  • Allungamento dei limiti di risorse
A partire da Microsoft SQL Server 2000 Service Pack 4 (SP4), SQL Server include la logica che consente di rilevare sia bloccato e bloccato le condizioni per i/o letture e scritture e letture dei / o file di log e scrive. Quando un'operazione dei / o è stato sospeso per 15 secondi o più, SQL Server esegue le seguenti operazioni:

  1. Rileva che l'operazione è stato in sospeso
  2. Scrive un messaggio informativo nel log degli errori di SQL Server

    Il testo del messaggio del registro è simile al seguente:

    00:21:25.26 2004-11-11 spid1 SQL Server ha rilevato occorrenze 192 del delle richieste dei / o dura più di 15 secondi per completare l'operazione sul file [E:\SEDATA\stressdb5.ndf] database [stressdb] (7). L'handle di file del sistema operativo è 0x00000000000074D4. L'offset dei / o molto più recenti è: 0x00000000022000 ".

SPIEGAZIONE messaggio informativo

Testo del messaggioDescrizione
Numero > occorrenze dell'Numero di richieste dei / o che non è stata completata la lettura o l'operazione di scrittura in meno di 15 secondi.
Informazioni sui fileIl nome completo, il nome del database e il numero di identificazione (DBID).
HandleHandle del sistema operativo del file. È possibile utilizzare l'handle del sistema operativo con i debugger o con altre utilità per tenere traccia delle richieste di pacchetto (IRP) richiesta.
OffsetL'offset dell'ultimo bloccato l'operazione dei / o l'ultima operazione dei / o sia bloccato. È possibile utilizzare l'offset con i debugger o con altre utilità per tenere traccia delle richieste IRP.

Nota Quando il messaggio viene scritto nel log degli errori di SQL Server, l'operazione dei / o potrebbe non essere bloccato o bloccata.
Questo messaggio informativo indica che il carico corrente potrebbe essere in presenza di una delle seguenti condizioni:

  • Il carico di lavoro supera la capacità dei / o del percorso.
  • Il carico di lavoro supera la capacità del sistema corrente.
  • Il percorso dei / o è malfunzionante software; Forse un firmware o un problema di driver.
  • Il percorso dei / o dispone di componenti hardware non funziona correttamente.
Per ulteriori informazioni sui modelli dei / o di SQL Server 2000, visitare il seguente sito Web Microsoft:Nota In questo articolo TechNet si applica anche a Microsoft SQL Server 2005 e versioni successive.
Informazioni

I/o bloccati e i/o bloccata

/ O bloccati

I/o bloccati è definita come una richiesta dei / o che non viene completata. Spesso, i/o bloccato indica un IRP bloccati. Per risolvere un problema dei / o bloccato, è in genere necessario riavviare il computer o eseguire un'azione simile. Una condizione dei / o bloccata indica in genere una delle seguenti:

  • Hardware difettoso
  • Un bug in un componente del percorso i/o

/ O bloccata

I/o bloccata è definita come una richiesta dei / o di fine o che richiede tempo eccessivo per completare l'operazione. Bloccata i/o in genere si verifica per uno dei seguenti motivi:

  • La configurazione hardware
  • Le impostazioni del firmware
  • Un problema di driver di filtro che richiede assistenza da parte dell'hardware o del software per analizzare e risolvere

SQL Server i/o bloccato e bloccato i/o la registrazione e reporting

Supporto di Microsoft SQL Server gestisce molti casi ogni anno che comportano problemi dei / o bloccati o bloccati. Questi problemi dei / o vengono visualizzati in modi diversi. Problemi dei / o sono alcuni dei problemi più difficili da diagnosticare ed eseguire il debug e richiedono molto tempo e risorse per il debug da Microsoft e dal cliente. La funzionalità di reporting che sono stati aggiunti in modo significativo a SQL Server 2000 SP4 e versioni successive riducono il tempo necessario per identificare un problema dei / o.

Il reporting e la registrazione delle richieste dei / o sono stati progettati in base al file. Il rilevamento e la segnalazione delle richieste dei / o bloccate e bloccate sono due azioni.

La registrazione

Esistono due minuti quando si verifica un'azione di record di SQL Server. Il primo è quando non termina l'operazione dei / o. Se una richiesta dei / o richiede più di 15 secondi alla fine, si verifica un'operazione di record. Il secondo momento è quando si esegue la scrittura lazy. Quando si esegue la scrittura lazy, lazy writer controlla tutti i dati in sospeso e tutti i log in sospeso le richieste dei / o di file. Se viene superata la soglia di 15 secondi, si verifica un'operazione di record.

Reporting

Report generato in base a intervalli di 5 minuti o più distanti tra loro. Report si verifica quando viene eseguita la successiva richiesta dei / o sul file. Se è stata eseguita un'azione di record e sono trascorsi almeno 5 minuti durante l'ultimo report, il messaggio menzionato nella sezione "Riepilogo" viene scritta nel log degli errori di SQL Server.

Non è possibile modificare la soglia di 15 secondi. Tuttavia, è possibile disattivare il rilevamento dei / o bloccato o bloccato utilizzando il flag di traccia 830, anche se non è consigliabile eseguire questa operazione.

Per disattivare il rilevamento all'avvio di SQL Server, utilizzare il -T830 parametro di avvio per disattivare il rilevamento ogni volta che SQL Server viene avviato. Per disattivare il rilevamento di un'istanza di SQL Server attualmente in esecuzione, utilizzare la seguente istruzione:

DBCC traceoff (830, -1)
Questa impostazione è valida solo per la durata del processo di SQL Server.

Nota Una richiesta dei / o che risulta bloccata o bloccata viene segnalata solo una volta. Ad esempio, se il messaggio indica che rimangono in 10 richieste dei / o, i 10 rapporti non si verificherà nuovamente. Se il messaggio successivo indica che sono bloccate le richieste dei / o 15, che significa che 15 nuove richieste dei / o essere diventano bloccate.

Verifica il pacchetto di richiesta dei / o (IRP)

SQL Server utilizza le chiamate API di Microsoft Windows standard per leggere e scrivere dati. Ad esempio, SQL Server utilizza le seguenti funzioni:

  • WriteFile
  • ReadFile
  • WriteFileScatter
  • ReadFileGather
La richiesta di lettura o scrittura viene gestita da Windows come un pacchetto di richiesta dei / o (IRP). Per determinare lo stato del GIV, utilizzare entrambe le operazioni seguenti:

  • Assistenza Microsoft Platform Support
  • Il debugger del kernel
Per ulteriori informazioni su GIV e IRP (analisi), visitare il seguente sito Web Microsoft e cercare la parola chiave "IRP":Nota Il debug del kernel può essere un processo invasivo poiché il debug del kernel può richiedere l'interruzione del sistema per completare le operazioni di debug. Si consiglia di verificare la presenza di aggiornamenti disponibili per i seguenti elementi:

  • Il BIOS
  • Il firmware
  • Gli altri componenti del percorso i/o
Rivolgersi al fornitore dell'hardware prima di eseguire azioni aggiuntive di debug. La sessione di debug coinvolgerà un driver di terze parti, firmware o componente del driver di filtro.

Le prestazioni del sistema e le azioni di piano di query

In generale le prestazioni del sistema possono avere un ruolo chiave nell'elaborazione dei / o. Se si siano analizzando i risultati di operazioni dei / o bloccate o bloccate, si dovrebbe considerare lo stato generale del sistema. Eccessivo può provocare l'intero sistema a essere lenta. Ciò include l'elaborazione dei / o. Il comportamento del sistema nel momento in cui si verifica il problema può essere un fattore chiave per determinare la causa del problema. Ad esempio, se non è più elevata della CPU o l'utilizzo della CPU rimane elevato quando si verifica il problema, questo comportamento potrebbe indicare che utilizza un processo nel sistema della CPU così elevata che altri processi sono ripercussioni negative.

Contatori delle prestazioni

Per monitorare le prestazioni dei / o, esaminare i seguenti contatori di prestazioni per informazioni specifiche di percorso i/o:

  • Media secondi/trasf
  • Lunghezza media coda disco
  • Lunghezza corrente coda del disco
Ad esempio, il tempo medio/trasf in un computer che esegue SQL Server è in genere inferiore a 15 millisecondi. Se il valore Media secondi/trasf offre, ciò indica che il sottosistema dei / o è non ottimale mantenersi aggiornati con la richiesta dei / o.

Prestare attenzione quando si utilizzano i contatori delle prestazioni poiché SQL Server si avvale delle funzionalità dei / o asincrono che push in larga misura la lunghezza della coda del disco. Pertanto, più lunghe di coda del disco da soli non indicano un problema.

In Monitor di sistema di Windows, è possibile esaminare i contatori "disco fisico: Disk Bytes/sec" per ogni effetto disco e confrontare la frequenza di attività contro i contatori "processo: IO dati byte/Sec" e "processo: IO altri byte/sec" per ogni processo identificare se un insieme specifico di processi è la generazione dei / o un numero eccessivo di richieste. Esistono vari altri i/o relativi contatori disponibili nel processo di oggetto che fornisce informazioni più dettagliate. Se si stabilisce che un'istanza di SQL Server è responsabile dell'eccessivo carico dei / o sul server, consultare la sezione successiva su "Indici e parallelismo". Per informazioni dettagliate su come individuare e risolvere i colli di bottiglia, consultare la sezione "I colli di bottiglia" nel white paper MSDN Risoluzione dei problemi di prestazioni in SQL Server 2008 o Risoluzione dei problemi di prestazioni in SQL Server 2005.

Parallelismo e indici

Picchi dei / o si verificano spesso, perché manca un indice. Questo comportamento può gravemente inserire il percorso dei / o. Un passaggio che utilizza l'indice attivazione guidata (Ottimizzazione guidata indici) può contribuire a risolvere pressione dei / o sul sistema. Se una query dei vantaggi di un indice anziché una scansione della tabella, o forse se utilizza un ordinamento o un hash, il sistema può ottenere i seguenti vantaggi:

  • Viene effettuata una riduzione dei / o fisico necessario per completare l'azione che consente di creare direttamente i vantaggi di prestazioni per la query.
  • Numero di pagine nella cache di dati deve essere attivata. Di conseguenza, le pagine nella cache di dati sempre pertinenti query attive.
  • Ordina e gli hash vengono utilizzati perché un indice può essere manca o statistiche non aggiornate. È possibile ridurre tempdb utilizzo e sui conflitti aggiungendo uno o più indici.
  • Viene effettuata una riduzione in risorse, operazioni parallele o entrambi. Poiché SQL Server non garantisce l'esecuzione di query parallele, e viene considerato il carico sul sistema, è consigliabile ottimizzare tutte le query per l'esecuzione seriale. Per ottimizzare una query, aprire Query Analyzer e impostare il valore di sp_configure del massimo grado di parallelismo opzione su 1. Se tutte le query sono ottimizzate per eseguire immediatamente un'operazione seriale, l'esecuzione parallela è spesso semplicemente un risultato migliore. Tuttavia, molte volte esecuzione parallela viene selezionata perché la quantità di dati è semplicemente grande. Per un indice mancante, una sorta di grandi dimensioni potrebbe essere necessario si verificano. Più lavoratori che siano eseguendo l'operazione di ordinamento verranno creata una risposta più rapida. Tuttavia, questa azione può aumentare drasticamente la pressione nel sistema. Le richieste di lettura di grandi dimensioni da molti lavoratori possono causare un burst dei / o con un aumento dell'utilizzo della CPU da più lavoratori. Numero di volte una query può essere ottimizzata per velocizzare l'esecuzione e di utilizzare meno risorse se viene aggiunto un indice o un'altra azione di ottimizzazione.

Esempi pratici dal supporto di Microsoft SQL Server

Negli esempi seguenti sono stati gestiti tramite il supporto di Microsoft SQL Server e le piattaforme Escalation. Questi esempi sono destinati a fornire un quadro di riferimento e una Guida insieme alle aspettative circa bloccato e bloccato situazioni dei / o e su come un sistema potrebbe essere interessato o può rispondere. Non vi è alcun hardware specifico o un insieme di driver che implicano qualsiasi rischio specifico di un rischio maggiore rispetto a un altro. Tutti i sistemi sono gli stessi in proposito.

Esempio 1: Una scrittura nel log che è bloccato per 45 secondi

Un tentativo di scrivere un file di log di SQL Server periodicamente rimane bloccato per circa 45 secondi. La scrittura nel log non viene completata in modo tempestivo. Questo comportamento consente di creare una condizione di blocco che causa i timeout dei client di 30 secondi.

La domanda è presentata una conferma di SQL Server e il commit è diventato bloccato come scrittura log in sospeso. Questo comportamento consente alla query blocchi e per bloccare le richieste in arrivo da altri client. Altri client, avviare il timeout. Ciò aumenta il problema in quanto l'applicazione eseguire il rollback delle transazioni aperte quando si verifica un timeout di query. Questo crea centinaia di transazioni aperte che contengono blocchi. Pertanto, si verifica una situazione di blocco grave.

Per ulteriori informazioni sulla transazione la gestione e il blocco, vedere il seguente articolo della Microsoft Knowledge Base:L'applicazione Servizi di un sito Web utilizzando il pool di connessioni. Come ulteriori connessioni vengono bloccate, il sito Web crea ulteriori connessioni. Queste connessioni vengono bloccate e il ciclo continua.

Dopo circa 45 secondi, completa la scrittura nel log. Tuttavia, a questo punto, centinaia di connessioni vengono sottoposti a backup. I problemi di blocco che diversi minuti di tempo di recupero per SQL Server e per l'applicazione. In combinazione con i problemi di applicazione, la condizione dei / o bloccata ha un effetto molto negativo sul sistema.
Risoluzione
Questo problema è stato registrato a una richiesta dei / o bloccata in un driver di scheda Bus Host (HBA). Il computer dispone di più schede HBA con supporto di failover. Quando una scheda HBA era dietro o stato non comunica con la rete di archiviazione (SAN), il valore di timeout "Riprova prima del failover" è stato configurato per 45 secondi. Quando il timeout viene superato, la richiesta dei / o è stata indirizzata all'HBA secondo. L'HBA secondo ha gestito la richiesta e completata rapidamente. Per evitare tali condizioni di stallo, il produttore dell'hardware consiglia un'impostazione "Riprova prima del failover" di 5 secondi.

Esempio 2: Intervento di driver filtro

Molti programmi software antivirus e prodotti di backup utilizzano driver di filtro dei / o. Questi driver filtro dei / o diventano parte dello stack di richiesta dei / o e hanno accesso alla richiesta IRP. Il servizio supporto tecnico clienti Microsoft ha visto vari problemi di bug che creare condizioni dei / o è bloccato o bloccate in condizioni dei / o nell'implementazione di un driver di filtro.

Una tale condizione è un driver di filtro per l'elaborazione di backup che è consentito un backup dei file che risultavano aperte al momento dell'esecuzione del backup. L'amministratore di sistema fosse stata inclusa la directory di file di dati di SQL Server in selezioni il file di backup. Quando si è verificato il backup, il backup viene effettuato un tentativo di raccogliere l'immagine corretta del file all'avvio del backup. Questo ritardo le richieste dei / o. Le richieste dei / o era possibile completare solo uno alla volta come essi sono stati gestiti dal software.

Quando viene avviato il backup, le prestazioni di SQL Server interrotta drasticamente il / o di SQL Server erano costretti a fine uno alla volta. Per composti il problema, la logica "uno alla volta" era tale che l'operazione dei / o potrebbe non essere eseguita in modo asincrono. Pertanto, quando SQL Server previsto per registrare una richiesta dei / o e per continuare, il lavoratore bloccato in lettura o scrittura chiamata fino al completamento della richiesta dei / o. Attività di elaborazione, ad esempio un SQL Server read-ahead sono state disattivate in modo efficace mediante le azioni del driver di filtro. Inoltre, un altro bug nel driver di filtro a sinistra le azioni "uno alla volta" nel processo, anche quando il backup è stato completato. Per chiudere e riaprire il database o il riavvio di SQL Server in modo che l'handle di file è stato rilasciato e riacquisito senza l'interazione di driver di filtro è stato l'unico modo per ripristinare le prestazioni di SQL Server.
Risoluzione
Per risolvere questo problema, i file di dati di SQL Server sono stati rimossi dal processo di backup di file. Inoltre, la fabbricazione di software corretto il problema che il file in modalità "uno alla volta" a sinistra.

Esempio 3: Nascondere errori

Molti sistemi di fascia alta sono percorsi dei / o multicanale per gestire il bilanciamento del carico o attività simili. Il servizio supporto tecnico clienti Microsoft ha rilevato problemi con il software in una richiesta dei / o non riesce, ma il software non gestisce correttamente la condizione di errore di bilanciamento del carico. Il software può tentare di tentativi infiniti. L'operazione dei / o rimane bloccato e SQL Server non è possibile completare l'azione specificata. Analogamente il registro scrivere condizione descritto in precedenza, molti dei problemi di sistema insufficienti può verificarsi dopo tale condizione wedges il sistema.
Risoluzione
Per risolvere questo problema, riavviare SQL Server è spesso necessario. Tuttavia, talvolta è necessario riavviare il sistema operativo per ripristinare l'elaborazione. È inoltre consigliabile richiedere un aggiornamento software del fornitore dei / o.

Esempio 4: Archiviazione remota, il mirroring e raid unità

Molti sistemi, utilizzano il mirroring o operazioni simili per evitare perdite di dati. Alcuni sistemi che utilizzano il mirroring sono basate sul software e alcuni sono basate sull'hardware. La situazione che è in genere rilevata dal supporto Microsoft per questi sistemi è l'incremento di latenza.

Un aumento del tempo complessivo dei / o si verifica quando il / o deve essere completato il mirror prima dei / o è considerato completo. Per le installazioni remote di mirror, tentativi di rete possono diventare complesse. Quando si verificano errori di unità e sta ricreando il sistema raid, il modello dei / o può anche essere interrotto.
Risoluzione
Le impostazioni di configurazione Strict sono necessari per ridurre la latenza di mirror o di operazioni di ricostruzione raid.

Per ulteriori informazioni, vedere i requisiti per SQL Server per il supporto remoto il mirroring dei database utente.

Esempio 5: compressione

Microsoft non supporta Microsoft SQL Server 7.0 o Microsoft SQL Server 2000 i file di dati e file di registro su unità compresse. La compressione NTFS non è sicura per SQL Server perché la compressione NTFS interrompe il protocollo di scrivere in anticipo la registrazione (WAL). La compressione NTFS richiede anche maggiore elaborazione per ogni operazione dei / o. La compressione consente di creare "uno alla volta" simile che provoca seri problemi di prestazioni si verifica.
Risoluzione
Per risolvere questo problema, decomprimere i dati e i file di registro.

Per ulteriori informazioni, vedere la descrizione del supporto per i database di SQL Server su volumi compressi.

Punti dati aggiuntivi

PAGEIOLATCH_ * e writelog attese in os_wait_stats viste a gestione dinamica (DMV) sono indicatori chiave per analizzare le prestazioni dei / o percorso. Se si attende PAGEIOLATCH significativi, ciò significa che SQL Server è in attesa del sottosistema dei / o. In genere una certa quantità di attese PAGEIOLATCH e il comportamento previsto. Tuttavia, se la media di tempi di attesa PAGEIOLATCH è costantemente superiore a 10 millisecondi (ms), è necessario individuare il motivo per cui il sottosistema dei / o è sotto pressione. Per ulteriori informazioni, vedere i seguenti documenti:



SQL Server richiede che i sistemi supportano "consegna garantita su un supporto stabile" come descritto in Requisiti del programma di affidabilità di i/o SQL Server. Per ulteriori informazioni sui requisiti di input e outpui per il motore di database di SQL Server, visitare il seguente articolo della Microsoft Knowledge Base:

IO EventID 833

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 897284 - Ultima revisione: 10/01/2015 04:21:00 - Revisione: 1.0

Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Business Intelligence, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbinfo kbtshoot kbsqlserv2000sp4fea kbmt KB897284 KbMtit
Feedback
x-xxxx-4xxx-Rxxx-xxxxxxxxxxxx".replace(/x/g, function () { return Math.floor(Math.random() * 16).toString(16); })).replace("R", (8 | Math.floor(Math.random() * 3)).toString(16)); var m = document.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);