Condividi tramite


Escalation dei blocchi

L'escalation dei blocchi è il processo di conversione di più blocchi specifici, quali le righe, in un numero inferiore di blocchi generici, quali le tabelle. L'utilizzo dell'escalation dei blocchi riduce l'overhead del sistema.

Microsoft In SQL Server 2005 Compact Edition (SQL Server Compact Edition) i blocchi di riga e i blocchi di pagina vengono alzati automaticamente di livello a blocchi di tabella quando una transazione supera la soglia di escalation. In SQL Server Compact Edition l'escalation dei blocchi può verificarsi da riga a tabella o da pagina a tabella, ma non da riga a pagina. Quando l'escalation si verifica a livello di tabella, non è possibile eseguire alcuna richiesta per i blocchi inferiori alle tabelle.

Quando, ad esempio, una transazione opera sulle righe da una tabella, SQL Server Compact Edition acquisisce automaticamente i blocchi sulle righe interessate e imposta blocchi preventivi di livello superiore nelle pagine e nella tabella contenenti tali righe. Vengono bloccate inoltre le pagine di indice pertinenti. Quando il numero di blocchi mantenuti attivi dalla transazione supera la soglia, SQL Server Compact Edition tenta di sostituire il blocco preventivo sulla tabella con un blocco più sicuro, sostituendo ad esempio un blocco esclusivo preventivo con un blocco esclusivo. Dopo l'acquisizione del blocco più sicuro, vengono rilasciati tutti i blocchi a livello di pagina e di riga mantenuti attivi dalla transazione sulla tabella.

L'escalation dei blocchi si verifica in base alla tabella quando una richiesta di blocco causa il superamento di una determinata soglia di escalation dei blocchi. Tutti i blocchi a livello di sottotabella, indipendentemente dal tipo, contribuiscono a raggiungere la soglia. La soglia di escalation deve essere considerata solo un valore approssimativo, poiché tutti i blocchi richiesti dalle operazioni interne contribuiscono al raggiungimento di tale soglia. L'escalation potrebbe quindi verificarsi prima del previsto.

Se l'escalation non è possibile a causa di un conflitto di blocchi, la transazione continuerà ed è possibile che l'escalation venga tentata nuovamente in seguito.

[!NOTA] I blocchi preventivi, i blocchi di riga e i blocchi di pagina contribuiscono tutti al raggiungimento della soglia dell'escalation, a meno che non si tratti di blocchi di tabella temporanei. Quando il totale dei blocchi preventivi, dei blocchi di riga e dei blocchi di pagina su una tabella specifica supera la soglia di escalation, si verifica l'escalation.

È possibile controllare l'escalation dei blocchi per sessione impostando la soglia di escalation dei blocchi come nel seguente esempio di codice:

SET LOCK_ESCALATION 1000;

Questa impostazione ha effetto su tutte le tabelle del database. Il valore predefinito è 100.

Vedere anche

Concetti

Informazioni sul blocco
Visualizzazione delle informazioni sui blocchi
Personalizzazione del blocco

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition