Skip to main content

Cos'è il controllo della concorrenza?

Nella programmazione della gestione dei dati, il controllo della concorrenza è un meccanismo progettato per garantire che risultati accurati siano generati da operazioni simultanee.Tali risultati devono anche essere ottenuti in modo tempestivo.Il controllo della concorrenza è molto spesso visto nei database in cui vi è una cache di informazioni ricercabili che gli utenti possono ottenere.

I programmatori cercano di progettare un database in modo tale che l'effetto delle transazioni importanti sui dati condivisi sarà in serie.Ciò significa che i dati che entrano in contatto con serie di transazioni sarebbero in un determinato stato in cui i risultati sono ottenibili se tutte le transazioni eseguono in serie e in un ordine particolare.A volte che i dati non sono validi a seguito della modifica da due transazioni, contemporaneamente.

Esistono diversi modi per garantire che le transazioni eseguano l'una dopo l'altra, incluso l'uso dell'esclusione reciproca e la creazione di una risorsa che decida quali transazioni hannoaccesso.Questo è eccessivo, tuttavia, e non consentirà a un programmatore di beneficiare del controllo della concorrenza in un sistema distribuito.Il controllo della concorrenza consente l'esecuzione simultanea di più transazioni mantenendo queste transazioni lontane l'una dall'altra, garantendo la linearizzabilità.Un modo per implementare il controllo della concorrenza è l'uso di un blocco esclusivo su una particolare risorsa per le esecuzioni di transazioni seriali che condividono le risorse.Le transazioni bloccano un oggetto destinato a essere utilizzato e se qualche altra transazione fa una richiesta per l'oggetto bloccato, che la transazione deve attendere che l'oggetto si sblocca.

L'implementazione di questo metodo nei sistemi distribuiti coinvolge i manager di blocchi mdash;server che emettono blocchi di risorse.Questo è molto simile ai server per esclusioni reciproche centralizzate, in cui i clienti possono richiedere blocchi e inviare messaggi per il rilascio di blocchi su una determinata risorsa.La conservazione dell'esecuzione seriale, tuttavia, è ancora necessaria per il controllo della concorrenza.Se due transazioni separate accedono a un set di oggetti simili, i risultati devono essere simili e come se queste transazioni fossero eseguite in un ordine particolare.Per garantire l'ordine sull'accesso a una risorsa, viene introdotto il bloccaggio a due fasi, il che significa che le transazioni non sono consentite nuove blocchi al momento del rilascio di un blocco separato.

in bloccaggio bidimensibile per il controllo della concorrenza, la sua fase iniziale è considerata in crescitafase, in cui la transazione acquisisce il suo blocco necessario.La fase successiva è considerata una fase di restringimento, in cui la transazione ha le sue serrature rilasciate.Ci sono problemi con questo tipo di bloccaggio.Se le transazioni interrompono, altre transazioni potrebbero utilizzare i dati da oggetti modificati e sbloccati da transazioni abortite.Ciò comporterebbe l'absio di altre transazioni.