Concorrenza

La concorrenza è la possibilità per più utenti di accedere ai dati contemporaneamente. Quando il numero di operazioni simultanee che possono essere supportate dal motore di database è elevato, la concorrenza del database aumenta. In Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) il controllo della concorrenza si ottiene utilizzando blocchi che consentano di proteggere i dati. I blocchi consentono di controllare in che modo più utenti possano accedere ai dati condivisi e modificarli contemporaneamente senza causare conflitti. Per ulteriori informazioni, vedere Blocco (SQL Server Compact Edition).

Problemi di concorrenza

Se le operazioni di modifica e di lettura dei dati da parte di più utenti non vengono gestite, possono verificarsi problemi di concorrenza. Se, ad esempio, più utenti accedono a un database contemporaneamente, è possibile che le relative transazioni tentino di eseguire operazioni sugli stessi dati contemporaneamente. Di seguito sono elencati alcuni problemi di concorrenza che si verificano durante l'utilizzo di SQL Server Compact Edition:

  • Perdita di aggiornamenti.
    La perdita di aggiornamenti si verifica quando da due o più transazioni viene selezionata la stessa riga che viene quindi aggiornata in base al valore selezionato in origine. Gli aggiornamenti eseguiti da altre transazioni vengono sovrascritti da quello più recente, provocando la perdita dei dati.
  • Analisi inconsistente (letture non ripetibili).
    Le letture non ripetibili si verificano quando una seconda transazione accede più volte alla stessa riga e legge ogni volta dati diversi. Questa situazione prevede più letture della stessa riga. Ogni volta, le informazioni vengono modificate da un'altra transazione.
  • Letture fantasma.
    Le letture fantasma si verificano quando si esegue un'operazione di inserimento o di eliminazione su una riga appartenente a un intervallo di righe in fase di lettura da parte di una transazione. La prima lettura dell'intervallo di righe da parte della transazione mostra una riga che non esiste più nella lettura successiva, a causa di un'eliminazione eseguita da un'altra transazione. Analogamente, come conseguenza di un inserimento da parte di un'altra transazione, la lettura successiva della transazione mostra una riga che non esisteva nella lettura originale.

[!NOTA] Un problema di concorrenza molto comune, non riscontrato in SQL Server Compact Edition, è la dipendenza da dati di cui non è stato eseguito il commit (lettura dirty). Questo problema si verifica quando una seconda transazione seleziona una riga in fase di aggiornamento da parte di un'altra transazione. La seconda transazione legge pertanto dati di cui non è ancora stato eseguito il commit e che potrebbero venire modificati dalla transazione che sta aggiornando la riga. Le letture dirty si verificano durante l'utilizzo di Microsoft SQL Server 2005. Per ulteriori informazioni sui problemi di concorrenza, vedere "Effetti della concorrenza" nella documentazione in linea di SQL Server.

Controllo della concorrenza

In uno scenario di database esistono due tipi di meccanismi di controllo della concorrenza:

  • Controllo della concorrenza ottimistica
    Il controllo della concorrenza ottimistica si basa sul presupposto che i conflitti di risorse tra più utenti siano improbabili e consente l'esecuzione delle transazioni senza bloccare alcuna risorsa. Le risorse vengono controllate solo se le transazioni tentano di modificare i dati, al fine di determinare se si è verificato un conflitto, ad esempio controllando un numero di versione. Se si verifica un conflitto, è necessario che i dati vengano letti dall'applicazione e che venga tentata una nuova modifica. Il controllo della concorrenza ottimistica non è disponibile con il prodotto, ma è possibile integrarlo manualmente nell'applicazione tenendo traccia dell'acceso al database.
  • Controllo della concorrenza pessimistica
    Il controllo della concorrenza pessimistica consente, se necessario, di bloccare le risorse per tutta la durata di una transazione. SQL Server Compact Edition supporta il controllo della concorrenza pessimistica.

Per ulteriori informazioni sulla concorrenza ottimistica e pessimistica, vedere "Tipi di controllo della concorrenza" nella documentazione in linea di SQL Server.

Vedere anche

Concetti

Transazioni (SQL Server Compact Edition)
Blocco (SQL Server Compact Edition)
Accesso multiutente

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition