Concorrenza, lucidi integrativi



Похожие документы
Esecuzione concorrente di transazioni

Corso di Sistemi di Gestione di Basi di Dati. Esercitazione sul controllo di concorrenza 12/02/2004

Tratti dal cap. 9 di: Atzeni, Ceri, Paraboschi, Torlone Basi di Dati II edizione, 1999, McGraw-Hill

Controllo concorrenza

Basi di Dati e Sistemi Informativi. Le Transazioni. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Tecnologia di un Database Server (centralizzato) Gestione della concorrenza

ARCHITETTURA DI UN B.D.M.S. Parte I Il controllo di concorrenza

Indicare se i seguenti schedule possono produrre anomalie; i simboli ci e ai indicano l esito (commit o abort) della transazione.

Basi di Dati Complementi Esercizi Esercizi su concurrency control

execute reject delay

Transazioni. Architettura di un DBMS. Utente/Applicazione. transazioni. Transaction Manager. metadati, statistiche.

Deadlock (stallo) Parte III. Deadlock

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Basi di Dati prof. A. Longheu. 5 Progettazione fisica

DB - Cenni sulla gestione delle transazioni

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Parte 1 Gestione della concorrenza

Transazioni in SQL. Nicola Vitacolonna Corso di Basi di Dati Università degli Studi di Udine 4 dicembre 2013

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo

Deadlock e Starvation

Transazioni. Capitolo 13. Scrittura immediata e scrittura differita. Concorrenza in un DBMS. Una transazione. Gestione delle transazioni

BASI DI DATI: Aspetti gestionali e sviluppi evolutivi dei DBMS info@vittorioprisco.com

Il linguaggio SQL: transazioni

Linguaggio SQL: costrutti avanzati

Java threads (2) Programmazione Concorrente

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica

Indice Prefazione SQL Procedurale/SQL-PSM (Persistent Stored Modules)... 3 Vincoli e Trigger... 9

Data Base Management System. Strumenti: Formato: Pro: Contro: Software specifico. Proprietario

La gestione della concorrenza in pratica

BENEDETTI ALESSANDRO Matricola : PROGETTO DI TECNOLOGIA DELLE BASI DI DATI PARTE 2

Basi di Dati: Complementi Docente: Prof. Pierangela Samarati

Un sistema operativo è un insieme di programmi che consentono ad un utente di

MODELLISTICA DI IMPIANTI E SISTEMI 2

Tecnologia di un Database Server (centralizzato) Introduzione generale

Corso di Programmazione Concorrente

8 Tecniche di recovery

Basi di Dati Distribuite

Transazioni e controllo della concorrenza

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Introduzione ai Metodi Formali

File system II. Sistemi Operativi Lez. 20

L architettura di un DBMS

Database. Si ringrazia Marco Bertini per le slides

Sistemi Operativi Kernel

Artifact Centric Business Processes (I)

DMA Accesso Diretto alla Memoria

Gestione delle transazioni. Concetto di transazione

Lo schedulatore del kernel

Recovery manager Gestore della affidabilità

Introduzione all Information Retrieval

COME SI ENTRA IN POSIZIONE

Gestione della memoria centrale

Transazioni. Antonella Poggi. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

TRANSAZIONI DISTRIBUITE TRANSAZIONI

COGNOME MATRICOLA. UTENTE(ID, Nome, Cognome, Eta) ALBERGO(Nome, Citta, NumStelle) PRENOTAZIONE(Codice, NomeAlbergo, IDUtente, DataArrivo, NumNotti)

3. Introduzione all'internetworking

Sincronizzazione distribuita: Mutua esclusione ed elezione

IL PROBLEMA DELLO SHORTEST SPANNING TREE

Sincronizzazione nei Sistemi Distribuiti

Introduzione all Architettura del DBMS

Transazioni. Transazioni. Stati di una transazione. Transazioni

Organizzazione della produzione

Sistemi Operativi SCHEDULING DELLA CPU

Decomposizione senza perdita. Decomposizione senza perdita. Conservazione delle dipendenze. Conservazione delle dipendenze

PROGRAMMA DI CLASSE 5AI

Sistemi di gestione delle basi di dati. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

La Gestione delle risorse Renato Agati

SCHEDULATORI DI PROCESSO

Ricerca Operativa e Logistica

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

regola(1,[e,f],b) regola(2,[m,f],e) regola(3,[m],f) regola(4,[b,f],g) regola(5,[b,g],c) regola(6,[g,q],a)

APPENDICE. Procedure in SQL (1)

Ricorsione in SQL-99. Introduzione. Idea di base

ESERCIZIO 1 (15 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un sistema di prenotazioni di biglietti aerei:

La gestione della concorrenza

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Programma Gestione Presenze Manuale autorizzatore. Versione /08/2010. Area Sistemi Informatici - Università di Pisa

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Транскрипт:

Concorrenza, lucidi integrativi Paolo Atzeni, gennaio 2001 Anomaly 5: Phantom Transaction t 1 Transaction t 2 bot read salaries of employees in dept A and compute average bot insert new employee in Dept A commit read salaries of employees in dept A and compute average commit 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 2 1

Anomaly 5: Phantom, again Transaction t 1 Transaction t 2 bot bool:=(there is BD course) if not bool then insert BD course... commit bot bool:=(there is BD course) if not bool then insert BD course... commit 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 3 CSR e VSR Ogni schedule conflict-serializzabile è view-serializzabile, ma non necessariamente viceversa Controesempio per la non necessità: r1(x) w2(x) w1(x) w3(x) view-serializzabile: view-equivalente a r1(x) w1(x) w2(x) w3(x) non conflict-serializzabile Sufficienza: vediamo 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 4 2

CSR implica VSR CSR: esiste schedule seriale conflict-equivalente VSR: esiste schedule seriale view-equivalente Per dimostrare che CSR implica VSR è sufficiente dimostrare che la conflict-equivalenza C implica la view-equivalenza V, cioè che se due schedule sono C allora sono V Quindi, supponiamo S 1 C S 2 e dimostriamo che S 1 V S 2 I due schedule hanno: stesse scritture finali: se così non fosse, ci sarebbero almeno due scritture in ordine diverso e poiché due scritture sono in conflitto i due schedule non sarebbero C stessa relazione legge-da : se così non fosse, ci sarebbero scritture in ordine diverso o coppie lettura-scrittura in ordine diverso e quindi, come sopra sarebbe violata la C 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 5 CSR e aciclicità del grafo dei conflitti Se uno schedule S è CSR allora è C ad uno schedule seriale. Supponiamo le transazioni nello schedule seriale ordinate secondo il TID: t 1, t 2,, t n. Poiché lo schedule seriale ha tutti i conflitti nello stesso ordine dello schedule S, nel grafo di S ci possono essere solo archi (i,j) con i<j e quindi il grafo non può avere cicli, perché un ciclo richiede almeno un arco (i,j) con i>j. Se il grafo di S è aciclico, allora esiste fra i nodi un ordinamento topologico (cioè una numerazione dei nodi tale che il grafo contiene solo archi (i,j) con i<j). Lo schedule seriale le cui transazioni sono ordinate secondo l ordinamento topologico è equivalente a S, perché per tutti i conflitti (i,j) si ha sempre i<j. 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 6 3

Controllo della concorrenza in pratica Anche la conflict-serializabilità, pur più rapidamente verificabile, è inutilizzabile in pratica La tecnica sarebbe efficiente se potessimo conoscere il grafo dall inizio, ma così non è: uno scheduler deve operare incrementalmente, cioè ad ogni richiesta di operazione decidere se eseguirla subito oppure fare qualcos altro; non è praticabile mantenere il grafo, aggiornarlo e verificarne l aciclicità ad ogni richiesta di operazione Inoltre, la tecnica si basa sull ipotesi di commit-proiezione In pratica, si utilizzano tecniche che garantiscono la conflict-serializzabilità senza dover costruire il grafo non richiedono l ipotesi della commit-proiezione 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 7 Two-phase locking (2PL) 2PL (Two-Phase Locking, Locking a due fasi ): Protocollo che impone a ciascuna transazione di acquisire tutti i propri lock prima di iniziare a rilasciarne (o, in altre parole, che impedisce l aquisizione di nuovi lock a transazioni che ne abbiano gia rilasciati) Uno scheduler 2PL e e uno scheduler che genera solo schedule 2PL cioe schedule in cui tutte le transazioni rispettano il protocollo 2PL (e gestisce i lock come visto in precedenza) 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 8 4

2PL e CSR Ogni schedule 2PL e anche conflict serializzabile, ma non necessariamente viceversa Controesempio per la non necessita : r 1 (x) w 1 (x) r 2 (x) w 2 (x) r 3 (y) w 1 (y) Viola 2PL Conflict-serializzabile Sufficienza: vediamo 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 9 2PL implica CSR S schedule 2PL Consideriamo per ciascuna transazione l istante in cui ha tutte le risorse e sta per rilasciare la prima Ordiniamo le transazioni in accordo con questo valore temporale e consideriamo lo schedule seriale corrispondente Vogliamo dimostrare che tale schedule è equivalente ad S: allo scopo, consideriamo un conflitto fra un azione di t i e un azione dei t j con i<j; è possibile che compaiano in ordine invertito in S? no, perché in tal caso t j dovrebbe aver rilasciato la risorsa in questione prima della sua acquisizione da parte di t i 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 10 5

Basic timestamp mechanism The scheduler has counters RTM(x) and WTM(x) for each object: RTM(x): the youngest transaction that has read x WTM(x): the youngest transaction that has written x The scheduler receives read and write requests: read(x,ts): if ts < WTM(x) then the request is rejected and the transaction is killed, otherwise the request is accepted and RTM(x) is set equal to the greater of RTM(x) and ts write(x,ts): if ts < WTM(x) or ts < RTM(x) then the request is rejected and the transaction is killed, otherwise the request is accepted and WTM(x) is set equal to ts Each schedule is conflict-equivalent to the serial schedule (induced by the timestamps), so TS implies CSR 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 11 Inefficiencies of TS The method causes the forced abort of a large number of transactions To avoid dirty reads, the system must buffer writes until commit, and this introduces waiting of transactions 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 12 6

2PL vs TS Sono incomparabili Schedule in TS ma non in 2PL r 1 (x) w 1 (x) r 2 (x) w 2 (x) r 0 (y) w 1 (y) Schedule in 2PL ma non in TS r 2 (x) w 2 (x)r 1 (x) w 1 (x) Schedule in TS e in 2PL r 1 (x) r 2 (y) w 2 (y) w 1 (x) r 2 (x) w 2 (x) 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 13 Comparison 2PL vs TS In 2PL the transactions are put in waiting. In TS they are killed and then restarted The serialization order in 2PL is imposed by locks, while in TS it is imposed by the timestamps The necessity of waiting for the commit of the transaction causes strict 2PL and buffering of writes in TS 2PL can give rise to deadlocks (discussed next) Restarting costs more than waiting: 2PL wins! 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 14 7

Granularita dei lock I lock possono essere acquisiti a diversi livelli di granularita : Tutta la base di dati Tutta una relazione Parte di una relazione (con criterio logico e fisico) Singola ennupla Vantaggi e svantaggi: Granularita fine: Riduce le probabilita di conflitto Richiede piu operazioni Granularita grossolano: Il contrario Permette forme di predicate-locking 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 15 Predicate locking Anomalia phantom : Inserimento di una ennupla, dopo aver verificato che non ce ne sia un altra con lo stesso valore della chiave Puo essere evitata con un lock a livello dipredicato Concettualmente, su una parte di relazione che soddisfa una condizione (valore della chiave) in pratica sull indice 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 16 8

Tuning dei lock e della granularita Compito del progettista (fisico) e del DBA Parametri a disposizione Granularita ; criteri base: A livello di ennupla per transazioni brevi e locali A livello di pagina per transazioni medie che sfruttino l ordinamento fisico A livello di relazione (o base di dati) per transazioni che ne coinvolgano porzione significativa Soglia (numero massimo di lock) oltre la quale si passa ad una granularita meno fine ( lock escalation ) Dimensione della tabella di lock 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 17 Deadlock resolution techniques A deadlock is a cycle in the wait-for graph which indicates wait conditions between transactions (node=transaction, arc=wait condition). Three techniques: 1. Timeout (most used; problem: choice of timeout with tradeoffs) 2. Deadlock detection 3. Deadlock prevention Deadlock detection: performs the search for cycles in a wait-for graph Deadlock prevention: kills the transactions that could cause a cycle (thus: it overkills) 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 18 9

Prevenzione dello stallo Si basa su note condizioni necessarie per lo stallo; evitandone almeno una, lo si impedisce hold and wait: in caso di stallo, ci deve essere una transazione con risorse assegnate e in attesa su altre. Per evitare questo si possono assegnare tutte le risorse in blocco a ciascuna transazione. Poco efficiente: occorre attendere che tutte le risorse siano libere. circular wait: ci deve essere una situazione di attesa circolare. Per evitare questo si considerano i timestamp delle transazioni, e si impone che una transazione possa porsi in attesa solo su un dato detenuto da una transazione piu giovane, altrimenti una delle due deve essere abortita. Causa un numero eccessivo di restart (molto superiore al rischio di stallo) ed e difficile scegliere la vittima (con rischio di blocco individuale, o starvation). 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 19 Isolation levels offered by SQL2 Some transactions are defined as read-only (they can t request exclusive locks and cannot write [except for temporary ones]) The level of isolation can be set for each transactions Read uncommitted no concurrency control, allows all anomalies Read committed avoids dirty reads and lost updates, but not inconsistent reads and phantoms Repeatable read allows phantoms, avoids other anomalies Serializable avoids all anomalies 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 20 10

Isolation levels, come sono realizzati Read uncommitted non richiede niente (e ammesso solo per transazioni read-only) Read committed rispetta gli altrui lock in scrittura (mantenuti fino al commit) Repeatable read 2PL, ma senza predicate lock Serializable 2PL e predicate lock 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 21 Isolation levels, commenti Le definizioni sono diventate standard di recente, ma la terminologia e variegata (e incoerente) guardare i manuali! Level 0, Level 1, Level 2, Level 3 (o Degree 0, ) Read uncommitted, Read committed, Repeatable read, Serializable Read uncommitted, Cursor stability, Read stability, Repeatable read 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 22 11

Concorrenza, lucidi integrativi Paolo Atzeni, gennaio 2001 Anomaly 5: Phantom Transaction t 1 Transaction t 2 bot read salaries of employees in dept A and compute average bot insert new employee in Dept A commit read salaries of employees in dept A and compute average commit 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 2 1

Anomaly 5: Phantom, again Transaction t 1 Transaction t 2 bot bool:=(there is BD course) if not bool then insert BD course... commit bot bool:=(there is BD course) if not bool then insert BD course... commit 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 3 CSR e VSR Ogni schedule conflict-serializzabile è view-serializzabile, ma non necessariamente viceversa Controesempio per la non necessità: r1(x) w2(x) w1(x) w3(x) view-serializzabile: view-equivalente a r1(x) w1(x) w2(x) w3(x) non conflict-serializzabile Sufficienza: vediamo 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 4 2

CSR implica VSR CSR: esiste schedule seriale conflict-equivalente VSR: esiste schedule seriale view-equivalente Per dimostrare che CSR implica VSR è sufficiente dimostrare che la conflict-equivalenza C implica la view-equivalenza V, cioè che se due schedule sono C allora sono V Quindi, supponiamo S 1 C S 2 e dimostriamo che S 1 V S 2 I due schedule hanno: stesse scritture finali: se così non fosse, ci sarebbero almeno due scritture in ordine diverso e poiché due scritture sono in conflitto i due schedule non sarebbero C stessa relazione legge-da : se così non fosse, ci sarebbero scritture in ordine diverso o coppie lettura-scrittura in ordine diverso e quindi, come sopra sarebbe violata la C 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 5 CSR e aciclicità del grafo dei conflitti Se uno schedule S è CSR allora è C ad uno schedule seriale. Supponiamo le transazioni nello schedule seriale ordinate secondo il TID: t 1, t 2,, t n. Poiché lo schedule seriale ha tutti i conflitti nello stesso ordine dello schedule S, nel grafo di S ci possono essere solo archi (i,j) con i<j e quindi il grafo non può avere cicli, perché un ciclo richiede almeno un arco (i,j) con i>j. Se il grafo di S è aciclico, allora esiste fra i nodi un ordinamento topologico (cioè una numerazione dei nodi tale che il grafo contiene solo archi (i,j) con i<j). Lo schedule seriale le cui transazioni sono ordinate secondo l ordinamento topologico è equivalente a S, perché per tutti i conflitti (i,j) si ha sempre i<j. 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 6 3

Controllo della concorrenza in pratica Anche la conflict-serializabilità, pur più rapidamente verificabile, è inutilizzabile in pratica La tecnica sarebbe efficiente se potessimo conoscere il grafo dall inizio, ma così non è: uno scheduler deve operare incrementalmente, cioè ad ogni richiesta di operazione decidere se eseguirla subito oppure fare qualcos altro; non è praticabile mantenere il grafo, aggiornarlo e verificarne l aciclicità ad ogni richiesta di operazione Inoltre, la tecnica si basa sull ipotesi di commit-proiezione In pratica, si utilizzano tecniche che garantiscono la conflict-serializzabilità senza dover costruire il grafo non richiedono l ipotesi della commit-proiezione 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 7 Two-phase locking (2PL) 2PL (Two-Phase Locking, Locking a due fasi ): Protocollo che impone a ciascuna transazione di acquisire tutti i propri lock prima di iniziare a rilasciarne (o, in altre parole, che impedisce l aquisizione di nuovi lock a transazioni che ne abbiano gia rilasciati) Uno scheduler 2PL e e uno scheduler che genera solo schedule 2PL cioe schedule in cui tutte le transazioni rispettano il protocollo 2PL (e gestisce i lock come visto in precedenza) 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 8 4

2PL e CSR Ogni schedule 2PL e anche conflict serializzabile, ma non necessariamente viceversa Controesempio per la non necessita : r 1 (x) w 1 (x) r 2 (x) w 2 (x) r 3 (y) w 1 (y) Viola 2PL Conflict-serializzabile Sufficienza: vediamo 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 9 2PL implica CSR S schedule 2PL Consideriamo per ciascuna transazione l istante in cui ha tutte le risorse e sta per rilasciare la prima Ordiniamo le transazioni in accordo con questo valore temporale e consideriamo lo schedule seriale corrispondente Vogliamo dimostrare che tale schedule è equivalente ad S: allo scopo, consideriamo un conflitto fra un azione di t i e un azione dei t j con i<j; è possibile che compaiano in ordine invertito in S? no, perché in tal caso t j dovrebbe aver rilasciato la risorsa in questione prima della sua acquisizione da parte di t i 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 10 5

Basic timestamp mechanism The scheduler has counters RTM(x) and WTM(x) for each object: RTM(x): the youngest transaction that has read x WTM(x): the youngest transaction that has written x The scheduler receives read and write requests: read(x,ts): if ts < WTM(x) then the request is rejected and the transaction is killed, otherwise the request is accepted and RTM(x) is set equal to the greater of RTM(x) and ts write(x,ts): if ts < WTM(x) or ts < RTM(x) then the request is rejected and the transaction is killed, otherwise the request is accepted and WTM(x) is set equal to ts Each schedule is conflict-equivalent to the serial schedule (induced by the timestamps), so TS implies CSR 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 11 Inefficiencies of TS The method causes the forced abort of a large number of transactions To avoid dirty reads, the system must buffer writes until commit, and this introduces waiting of transactions 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 12 6

2PL vs TS Sono incomparabili Schedule in TS ma non in 2PL r 1 (x) w 1 (x) r 2 (x) w 2 (x) r 0 (y) w 1 (y) Schedule in 2PL ma non in TS r 2 (x) w 2 (x)r 1 (x) w 1 (x) Schedule in TS e in 2PL r 1 (x) r 2 (y) w 2 (y) w 1 (x) r 2 (x) w 2 (x) 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 13 Comparison 2PL vs TS In 2PL the transactions are put in waiting. In TS they are killed and then restarted The serialization order in 2PL is imposed by locks, while in TS it is imposed by the timestamps The necessity of waiting for the commit of the transaction causes strict 2PL and buffering of writes in TS 2PL can give rise to deadlocks (discussed next) Restarting costs more than waiting: 2PL wins! 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 14 7

Granularita dei lock I lock possono essere acquisiti a diversi livelli di granularita : Tutta la base di dati Tutta una relazione Parte di una relazione (con criterio logico e fisico) Singola ennupla Vantaggi e svantaggi: Granularita fine: Riduce le probabilita di conflitto Richiede piu operazioni Granularita grossolano: Il contrario Permette forme di predicate-locking 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 15 Predicate locking Anomalia phantom : Inserimento di una ennupla, dopo aver verificato che non ce ne sia un altra con lo stesso valore della chiave Puo essere evitata con un lock a livello dipredicato Concettualmente, su una parte di relazione che soddisfa una condizione (valore della chiave) in pratica sull indice 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 16 8

Tuning dei lock e della granularita Compito del progettista (fisico) e del DBA Parametri a disposizione Granularita ; criteri base: A livello di ennupla per transazioni brevi e locali A livello di pagina per transazioni medie che sfruttino l ordinamento fisico A livello di relazione (o base di dati) per transazioni che ne coinvolgano porzione significativa Soglia (numero massimo di lock) oltre la quale si passa ad una granularita meno fine ( lock escalation ) Dimensione della tabella di lock 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 17 Deadlock resolution techniques A deadlock is a cycle in the wait-for graph which indicates wait conditions between transactions (node=transaction, arc=wait condition). Three techniques: 1. Timeout (most used; problem: choice of timeout with tradeoffs) 2. Deadlock detection 3. Deadlock prevention Deadlock detection: performs the search for cycles in a wait-for graph Deadlock prevention: kills the transactions that could cause a cycle (thus: it overkills) 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 18 9

Prevenzione dello stallo Si basa su note condizioni necessarie per lo stallo; evitandone almeno una, lo si impedisce hold and wait: in caso di stallo, ci deve essere una transazione con risorse assegnate e in attesa su altre. Per evitare questo si possono assegnare tutte le risorse in blocco a ciascuna transazione. Poco efficiente: occorre attendere che tutte le risorse siano libere. circular wait: ci deve essere una situazione di attesa circolare. Per evitare questo si considerano i timestamp delle transazioni, e si impone che una transazione possa porsi in attesa solo su un dato detenuto da una transazione piu giovane, altrimenti una delle due deve essere abortita. Causa un numero eccessivo di restart (molto superiore al rischio di stallo) ed e difficile scegliere la vittima (con rischio di blocco individuale, o starvation). 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 19 Isolation levels offered by SQL2 Some transactions are defined as read-only (they can t request exclusive locks and cannot write [except for temporary ones]) The level of isolation can be set for each transactions Read uncommitted no concurrency control, allows all anomalies Read committed avoids dirty reads and lost updates, but not inconsistent reads and phantoms Repeatable read allows phantoms, avoids other anomalies Serializable avoids all anomalies 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 20 10

Isolation levels, come sono realizzati Read uncommitted non richiede niente (e ammesso solo per transazioni read-only) Read committed rispetta gli altrui lock in scrittura (mantenuti fino al commit) Repeatable read 2PL, ma senza predicate lock Serializable 2PL e predicate lock 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 21 Isolation levels, commenti Le definizioni sono diventate standard di recente, ma la terminologia e variegata (e incoerente) guardare i manuali! Level 0, Level 1, Level 2, Level 3 (o Degree 0, ) Read uncommitted, Read committed, Repeatable read, Serializable Read uncommitted, Cursor stability, Read stability, Repeatable read 29/01/2001 Paolo Atzeni, Concorrenza, lucidi integrativi 22 11