Condividi tramite


Blocco dinamico

L'utilizzo dei blocchi a basso livello, ad esempio blocchi di riga, aumenta la concorrenza riducendo la probabilità che due transazioni richiedano i blocchi sullo stesso elemento di dati contemporaneamente. L'utilizzo dei blocchi a basso livello inoltre aumenta il numero dei blocchi e delle risorse necessarie a gestirli. I blocchi di tabella e di pagina ad alto livello comportano invece una diminuzione dell'overhead, ma a spese della concorrenza.

Diagramma di confronto tra costi e granularità

MicrosoftMotore di database di SQL Server adotta una strategia di blocco dinamico per determinare la combinazione di blocchi più efficiente. Il tipo di blocco più appropriato per l'esecuzione di una particolare query viene determinato in modo automatico da Motore di database in base alle caratteristiche dello schema e della query. Ad esempio, per ridurre l'overhead associato al blocco quando viene eseguita la scansione di un indice, Query Optimizer potrebbe scegliere un blocco a livello di pagina per l'indice.

L'utilizzo del blocco dinamico offre i vantaggi seguenti:

  • Amministrazione del database semplificata. Gli amministratori di database non devono gestire le soglie di escalation dei blocchi.

  • Prestazioni ottimizzate. L'overhead di sistema viene ridotto al minimo in Motore di database tramite l'utilizzo di blocchi adatti al tipo di attività eseguita.

  • Gli sviluppatori di applicazioni possono dedicarsi interamente alle operazioni di sviluppo, in quanto i blocchi vengono modificati in modo automatico in Motore di database.

In SQL Server 2008, il comportamento dell'escalation dei blocchi è stato modificato con l'introduzione dell'opzione LOCK_ESCALATION. Per ulteriori informazioni, vedere l'opzione LOCK_ESCALATION di ALTER TABLE.