Il procedimento detto Locking ("blocco" o anche "uso esclusivo") delle tabelle o dei record di un database rappresenta un soluzione grazie alla quale è possibile risolvere il problema della "concorrenza" (o "collo di bottiglia"), cioè quel fenomeno che si verifica quando più di un processo cerca di manipolare i dati contenuti all'interno di uno stesso archivio.
Il database manager MySQL mette a disposizione due tipologie differenti per il locking:
Nello stesso modo, il DBMS è in grado di gestire due diverse procedure di locking:
Il locking rappresenta una soluzione ottimale sia per una gestione razionale dei processi che per il risparmio delle risorse messe a disposizione da un sistema, è bene però stabilire in quali casi esso dovrebbe essere applicato e in quali risulterebbe invece una procedura superflua o addirittura controproducente.
Il locking si basa su specifiche tipologie di variabili chiamate Locks e dotate di particolari proprietà, un Database server MySQL con impostazioni predefinite presenta di default una variabile Lock associata ad ogni tabella.; nel momento in cui un utilizzatore impiega una variabile Lock per una specifica tabella, nessun altro utente potrà effettuare operazioni su di essa.
Per ogni tabella saranno possibili due tipologie di Lock dette anche locktypes:
Nel primo caso, a tutti gli utenti di MySQL sarà accordato il permesso di leggere il contenuto di una determinata tabella, ma nessuno di essi, compreso l'utilizzatore che ha impostato il Lock, avrà il permesso di apportare modifiche a carico della struttura dei dati; non sarà possibile definire Lock di tipo READ quando su una tabella sussiste già un blocco di tipo WRITE.
Nel secondo caso, locking in scrittura, soltanto l'utilizzatore che ha impostato il Lock potrà accedere alla tabella bloccata in lettura, mentre gli altri utenti si vedranno negato anche il permesso di lettura. Non è possibile impostare blocchi di tipo WRITE su tabelle in cui già sussiste un vincolo di tipo READ.
Alle due tipologie appena elencate corrispondono due ulteriori procedure di locking meno vincolanti rispetto a quelle in lettura e scrittura:
Le variabili Lock nascono per soddisfare una semplice ma fondamentale esigenza: evitare che due utilizzatori apportino contemporaneamente delle modifiche sugli stessi dati.
|
SQL Maintenance Solution: soluzione free per la manutenzione di SQL Server |
Guida AccessIniziare a sviluppare database grazie alla potenza visuale offerta... |
Guida SQL Server 2005L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito... |
Guida OracleScoprire ed approfondire un dei più importanti RDBMS sulla scena... |
Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.
Iscriviti alla newsletter