Condividi tramite


Blocco (SQL Server Compact)

Quando più utenti o applicazioni accedono agli stessi dati nello stesso momento, il blocco impedisce la modifica simultanea di dati. I blocchi vengono gestiti internamente da Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) Motore di database. e vengono acquisiti e rilasciati automaticamente in base alle operazioni eseguite dall'utente.

Se il blocco non viene utilizzato e più utenti aggiornano contemporaneamente gli stessi dati, i dati all'interno del database possono diventare non validi a livello logico. In tal caso, le query eseguite su questi dati potrebbero produrre risultati imprevisti.

Il blocco non viene mai richiesto direttamente dalle applicazioni. Quando inizia una transazione e i comandi vengono eseguiti nel linguaggio di query, nel linguaggio di manipolazione dei dati (DML, Data Manipulation Language ), o nel linguaggio di definizione dei dati (DDL, Data Definition Language) all'interno della transazione, SQL Server Compact 3.5 blocca tutte le risorse necessarie per la protezione delle risorse al livello di isolamento desiderato.

SQL Server Compact 3.5 determina automaticamente quando concedere e rilasciare i blocchi per tutte le risorse. Per impostazione predefinita, il blocco a livello di riga viene utilizzato per le pagine di dati e il blocco a livello di pagina viene utilizzato per le pagine di indice. Per preservare le risorse di sistema, Gestione blocchi esegue automaticamente l'escalation dei blocchi quando viene superata una soglia configurabile sul numero di blocchi di riga. Il numero massimo di blocchi che è possibile allocare per sessione in Gestione blocchi è 262143.

È possibile modificare la granularità del blocco per alcune operazioni. In questo caso è consigliabile prestare la massima attenzione, perché la modifica della granularità del blocco può avere effetti indesiderati sulla concorrenza.

SQL Server Compact 3.5 consente di bloccare le risorse seguenti:

  • Righe
  • Pagine di indice o dati di 4 KB
  • Schemi di tabella
  • Tabelle
  • Database

Un blocco di granularità minore, ad esempio a livello di riga, aumenta la concorrenza ma presenta maggiore overhead perché al blocco di un numero maggiore di righe corrisponde un numero maggiore di blocchi. Un blocco di granularità maggiore, ad esempio a livello di tabella, riduce la concorrenza perché il blocco di un'intera tabella limita l'accesso di altre transazioni alle varie sezioni della tabella. Il blocco a questo livello, tuttavia, presenta un overhead inferiore per il minor numero di blocchi.

In questa sezione

Argomento Descrizione

Informazioni sul blocco

Illustra le nozioni fondamentali sul blocco in SQL Server Compact 3.5.

Visualizzazione delle informazioni sui blocchi

Descrive le informazioni visualizzate restituite dalla vista sys.lock_information.

Personalizzazione del blocco

Descrive le modalità disponibili per la personalizzazione del blocco.