Diagnosi di un problema di escalation blocchi

Un lock escalation si verifica quando, per ridurre la memoria allocata ai lock (spazio di lock), numerosi lock a livello di riga vengono scalati in un unico lock di tabella che consente di risparmiare memoria. Questa situazione, sebbene sia automatizzata e consenta di risparmiare lo spazio di memoria dedicato ai blocchi, può ridurre la concorrenza a un livello inaccettabile. È probabile che si tratti di un problema di escalation dei blocchi se si verifica un numero di attese dei blocchi superiore alla norma e se le voci del registro di notifica dell'amministrazione indicano che si verificano escalation dei blocchi.

Informazioni preliminari

In generale, per poter valutare in modo oggettivo che il sistema sta dimostrando un comportamento anomalo, che può includere ritardi di elaborazione e prestazioni scadenti, è necessario disporre di informazioni che descrivano il comportamento tipico (linea di base) del sistema. Si può quindi fare un confronto tra le osservazioni del sospetto comportamento anomalo e la linea di base. La raccolta di dati di base, programmando attività di monitoraggio operativo periodico, è una componente fondamentale del processo di risoluzione dei problemi. Per informazioni più dettagliate sulla definizione del funzionamento di base del sistema, vedere: Monitoraggio operativo delle prestazioni del sistema.

Informazioni su questa attività

Diagnosi
L'escalation del blocco da più blocchi a livello di riga a un singolo blocco a livello di tabella può avvenire per i seguenti motivi:
  • La quantità totale di memoria consumata da molti lock a livello di riga mantenuti su una tabella supera la percentuale di memoria totale allocata per la memorizzazione dei lock
  • L'elenco delle chiusure esaurisce lo spazio a disposizione. L'applicazione che ha causato l'esaurimento dell'elenco dei blocchi verrà forzata attraverso il processo di escalation dei blocchi, anche se non è il detentore del maggior numero di blocchi.
La percentuale di soglia della memoria totale allocata per la memorizzazione dei lucchetti, che deve essere superata da un'applicazione perché si verifichi un'escalation di lucchetti, è definita dal parametro di configurazione del database maxlocks e la memoria allocata per i lucchetti è definita dal parametro di configurazione del database locklist. In un database ben configurato, la lock escalation è rara. Se l'escalation dei blocchi riduce la concorrenza a un livello inaccettabile, è possibile analizzare il problema e decidere la linea d'azione migliore.
L'escalation dei blocchi è meno problematica, dal punto di vista dello spazio di memoria, se STMM (Self Tuning Memory Manager) gestisce la memoria per i blocchi, altrimenti allocata solo dal parametro di configurazione del database locklist. STMM regolerà automaticamente lo spazio di memoria per i blocchi se dovesse esaurire lo spazio di memoria libero.
Segni indicativi
Cercate i seguenti segnali indicativi di escalation di serrature:
  • Blocco delle voci dei messaggi di escalation nel registro delle notifiche dell'amministrazione
Cosa monitorare
A causa della natura relativamente transitoria degli eventi di blocco, i dati sugli eventi di blocco sono più preziosi se raccolti periodicamente per un certo periodo di tempo, in modo da comprendere meglio l'evoluzione del quadro.
Controllare questo elemento di monitoraggio per verificare se l'escalation dei blocchi può essere un fattore che contribuisce al rallentamento delle prestazioni delle query SQL:
  • lock_escals

Se avete osservato uno o più dei segnali indicativi qui elencati, è probabile che abbiate un problema di escalation dei lucchetti. Seguite il link nella sezione Cosa fare per risolvere il problema.

Operazioni successive

Dopo aver diagnosticato che l'escalation dei blocchi è probabilmente la causa del problema riscontrato, è necessario intervenire per risolverlo: Risolvere i problemi di lock escalation