Il blocco di SQL Server in un database si verifica quando una transazione mantiene un blocco su una risorsa e impedisce a una o più connessioni di operare su quella stessa risorsa. La seconda connessione deve attendere il rilascio del blocco prima di poter continuare. Questo viene fatto per garantire la componente di isolamento, di ACID, il che significa che le transazioni simultanee non sono visibili l'una all'altra fino al completamento. Il blocco in SQL Server può devastare le prestazioni in qualsiasi ambiente.
Una delle attività svolte dagli amministratori di database è identificare la query che blocca, risolverla e quindi fare un ulteriore passo avanti per determinare la causa principale. La ricerca della causa principale, soprattutto dopo il fatto, può essere un compito molto difficile. Per la maggior parte, ciò significa un processo di rooting molto dispendioso in termini di tempo tramite viste a gestione dinamica di SQL Server come s ys.dm_exec_requests o eseguendo procedure di sistema come sp_who2 per scoprire i dettagli degli ID di processo di sistema (SPIDS) coinvolti nella blockchain. Spotlight Cloud può ridurre notevolmente i tuoi sforzi per identificare questi eventi di blocco.
Utilizzo del monitoraggio del database per identificare i blocchi di SQL Server
|
Figura 1:dashboard panoramica |
A partire dal dashboard Panoramica, Spotlight Cloud offre una visione chiara dell'intero ambiente. Mostra le metriche tra cui conteggi di sessioni, processi, utilizzo della memoria, consumo di dischi e attese a colpo d'occhio. Ancora più importante, mostra chiaramente l'attività di blocco; al centro della Figura 1, puoi vedere chiaramente che ci sono attualmente due processi bloccati.
Per un DBA, entrare nei dettagli è necessario per risolvere i problemi di blocco. Spotlight Cloud ci offre la possibilità di approfondire i dettagli della sessione semplicemente scegliendo il menu a discesa da Panoramica, come mostrato nella Figura 2.
Figura 2:menu a discesa dalla panoramica |
Spotlight Cloud ti consente di vedere facilmente quali sessioni sono bloccate e quali istruzioni sono coinvolte. Nella Figura 3, puoi vedere che SPID 59 e 65 sono entrambi bloccati (indicati in arancione intorno allo stato), che corrisponde al conteggio bloccato. Noterai inoltre che Spotlight Cloud continua a fornire dettagli di riepilogo sullo stato attuale dell'istanza, consentendoci di tenere d'occhio contatori importanti mentre ci addentriamo nei problemi di prestazioni.
Utilizzo di Spotlight Cloud SQL Server Monitoring per risolvere i problemi di blocco
|
Figura 3:dashboard delle sessioni |
Il dashboard Sessions (come mostrato nella Figura 3) ci fornisce informazioni vitali di cui abbiamo bisogno per risolvere il problema. Qui puoi trovare informazioni importanti come quale utente sta eseguendo le istruzioni, quale database è interessato e quando è stata dichiarata la sessione. La profondità dei dettagli fornita è un risparmio di tempo reale per quei DBA che hanno bisogno di risposte rapide a ciò che sta causando il blocco, in modo che possano risolverlo. Non solo vedi che hai due transizioni bloccate, ma possiamo anche vedere che sono entrambe istruzioni UPDATE sulla stessa tabella eseguite dall'account Servizi di rete rispetto al database Sales. La dichiarazione vera e propria è mostrata nell'angolo in basso a destra. Infine, possiamo vedere sia lo SPID attivo che lo SPID da cui viene bloccato.
Verso l'angolo in alto a destra della Figura 3, nel testo blu, Spotlight Cloud ti dice dove andare dopo nella tua indagine. Il prodotto all'interno di ogni strato offre un percorso chiaro su come immergersi ancora più in profondità. Facendo clic sul collegamento Esamina nell'analizzatore del carico di lavoro puoi vedere cosa ha invocato SPID 61 che sembra essere un blocco dei lead per SPID 65.
|
Figura 4:Analizzatore del carico di lavoro (è qui che vogliamo espandere le sessioni bloccate) |
L'analizzatore del carico di lavoro offre una dimensione dettagliata che consente di accedere a risorse specifiche come il blocco. Nella Figura 4, puoi vedere come ci immergiamo ulteriormente facendo clic sulle due frecce di espansione nell'angolo della sezione Sessioni bloccate.
Figura 5:dettaglio delle sessioni bloccate |
Ora che conosci il database coinvolto, puoi scavare un po' più in là. Nella barra di navigazione a sinistra, puoi approfondire il database delle vendite. Qui puoi vedere SPID 61 e 64 incluso lo stato corrente. Entrambi questi ID di processo di sistema stanno bloccando e notano che SPID 59 è ora bloccato anche da SPID 64. Questa visualizzazione aiuta a garantire che tu possa stare al passo con il blocco mentre continui a indagare.
Nella metà inferiore della Figura 5, puoi vedere nella mappatura della sessione bloccata che ti dice i dettagli di SPID 61, che in questo caso è il nostro lead blocker. Il colpevole è in realtà parte di un processo di SQL Agent in esecuzione, il che ha senso in base all'utente che abbiamo trovato mentre esegue l'istruzione. Se si ricorda che era l'account del servizio di rete, NT AUTHORITY\NETWORK SERVICE. In questa istanza, il servizio SQL Agent è in esecuzione con questo particolare set di credenziali.
Il prossimo passo è scoprire quali lavori sono in esecuzione e vedere se è possibile interrompere il lavoro per interrompere il blocco. Normalmente andresti a SQL Server Management Studio per rivedere SQL Agent e per esaminare i lavori, ma Spotlight ti semplifica le cose e ti offre anche una visione completa dei lavori. Puoi trovarlo facendo clic sulla freccia accanto alle parole "Analizzatore del carico di lavoro" in alto, proprio come hai fatto quando sei passato da Panoramica a Sessioni.
Figura 6:discesa da Workload Analyzer |
Prevenire futuri blocchi di SQL Server
La ricerca del blocco richiede tempo e, a volte, durante la ricerca di un problema particolare, il blocco si risolve da solo. In questo caso, il processo in esecuzione è stato completato e gli aggiornamenti bloccati sono stati in grado di essere eseguiti. Anche se il problema immediato non esiste più, devi continuare a cercare la causa principale per assicurarti di poterlo prevenire in futuro.
Poiché hai già identificato SPID 61 come lavoro in esecuzione e poiché il tempo è trascorso, dovrai ora esaminare la cronologia. Per rivedere la cronologia, è sufficiente modificare l'intervallo di date visualizzato nell'intervallo di tempo del blocco attivo. Nella Figura 7, puoi vedere l'intervallo di date nell'angolo destro, puoi fare clic sull'elenco a discesa e regolare gli orari di conseguenza. Successivamente, vuoi cercare SPID 61 utilizzando la funzionalità di ricerca. Ogni ambiente è diverso, quindi ciò che farai con queste informazioni ora dipenderà. Starà a te decidere se modificare i tempi del lavoro, apportare modifiche agli indici, al codice o alle configurazioni.
Figura 7 Lavori |
Figura 8:blocchi a corsa lunga |
Alcuni blocchi vanno e vengono così rapidamente che non hanno alcun effetto significativo sulle prestazioni. Quando rimangono più a lungo, dobbiamo sapere di questo velocemente. Spotlight Cloud ha un allarme di "blocco di lunga durata" che notifica all'utente i blocchi che non stanno scomparendo.
Figura 9:dimensione oggetto bloccato |
Il blocco è un sintomo di alcuni problemi più grandi e spesso sono necessarie prospettive diverse per arrivare alla causa principale. La dimensione dell'oggetto bloccato nell'analizzatore del carico di lavoro di Spotlight Cloud consente all'utente di accertare rapidamente gli oggetti che stanno generando l'attività più bloccante per una determinata istanza.
Identificare il blocco e scavare nella causa è la parte più difficile per i DBA. Spotlight Cloud Professional ci consente di ottenere queste informazioni in modo rapido ed efficiente. Quando il tempo risolve il problema attivo, Spotlight Cloud ci consente di continuare a indagare per arrivare a una causa principale e, in definitiva, ci fornisce le informazioni di cui abbiamo bisogno per prendere decisioni informate su come prevenire eventi futuri.
Vuoi vedere Spotlight Cloud in azione? Inizia oggi la tua prova gratuita di 30 giorni.