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
   1150   1151   1152   1153   1154   1155   1156   1157   1158   1159   1160