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 Compact 3.5 (SQL Server Compact 3.5) 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).
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 3.5:
- 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 3.5, è 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 2008. 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 3.5 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.
Nota
Alcuni scenari relativi a piattaforme a 64 bit non supportano l'accesso simultaneo a un file di database con versioni precedenti di SQL Server Compact. Per informazioni sui componenti a 64 bit, vedere Gestione di applicazioni di database a 64 bit.
Vedere anche
Concetti
Transazioni (SQL Server Compact)
Blocco (SQL Server Compact)
Accesso multiutente