Page 1155 - Informatica dalla A a Z
P. 1155
È possibile utilizzare i blocchi per eseguire due o più transazioni allo stesso tempo. Il suo
eccesso, però può portare a situazioni di stallo (Dead Lock).
Le condizioni di stallo possono essere dovute a:
Mutua esclusione: quando le risorse possono essere utilizzate solo da un processo
alla volta;
Possesso e attesa: quando i processi trattengono le risorse che già possiedono mentre
chiedono risorse addizionali;
Mancanza di pre-rilascio: Le risorse già assegnate ai processi non possono essere a que-
sti sottratte;
Attesa circolare.
Esistono anche altri metodi che permettono di avere ottimi risultati:
Il controllo sull’orario di accesso si effettua associando un’etichetta che contiene, per
l’appunto, l’orario di accesso (timestamp). Qualora si verificasse il caso che un’altra tran-
sazione con un orario di accesso successivo avesse già aggiornato i dati, l’operazione non
verrebbe più permessa e l’operazione si chiuderebbe con un Rollback.
Il controllo ottimistico consente solo operazioni di lettura. Se dovessero esserci opera-
zioni di scrittura viene controllata la presenza di altre transazioni sul dato. Anche qui se
un’altra transazione ha già aggiornato il dato, la transazione si chiude con un rollback.
È possibile impostare il livello di transazioni che possono essere elaborate nello stesso
tempo (livello di isolamento):
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
A seconda del livello di isolamento impostato si possono ottenere i seguenti livelli di
Protezione:
- Lettura sporca: si verifica quando la transazione 2 legge una riga prima che la tran-
sazione 1 sia chiusa con un commit.
- Lettura non ripetibile: si verifica quando una transazione legge lo stesso dato due
volte ottenendo un valore diverso.
- Lettura fantasma: si verifica quando una transazione cerca le righe che corrispon-
dono a una determinata condizione, ma trova le righe sbagliate per via delle modifi-
che apportate da un’altra transazione.
È fondamentale per un DataBase, poter garantire la sua sicurezza e la persistenza dei dati
in caso di problemi. Per questo in un DataBase è possibile stabilire i diritti di accesso di tutti
gli utenti, aumentandone il livello di sicurezza.
L’istruzione GRANT permette di assegnare i permessi di lettura e scrittura agli utenti.
1151