Ottimizzazione delle interrogazioni
|
|
|
- Graziano Riccardi
- 10 anni fa
- Visualizzazioni
Transcript
1 Ottimizzazione delle interrogazioni Prof. Matteo Golfarelli Alma Mater Studiorum - Università di Bologna Per approfondimenti: Ciaccia, Maio. Lezioni di basi di dati: pp Sistemi di basi di dati-complementi R.A. Elmasri and S.B. Navathe ORACLE 11g Performance Tuning Guide 1 Introduzione L ottimizzazione delle performance (tuning) è l insieme delle attività che mirano a massimizzare le prestazioni di un sistema in relazione agli obiettivi preposti e nel rispetto dei vincoli di sistema. Gli obiettivi da perseguire variano a seconda del tipo di sistema considerato: Sistemi OLTP: massimizzazione del throughput (quantità del lavoro svolto in un unità di tempo). Sistemi OLAP: minimizzazione del tempo di risposta all utente (response time). 2 1
2 Introduzione L ottimizzazione delle prestazioni è un fattore che deve essere preso in considerazione in tutte le fasi della progettazione e dell implementazione: Progettisti delle basi di dati attraverso una corretta modellazione. Progettisti delle applicazioni stabilendo il giusto compromesso tra complessità ed efficienza delle funzioni. Implementatori delle applicazioni attraverso un utilizzo attento delle risorse di sistema. Database Administrator che devono continuamente verificare le mutate necessità degli utenti e identificare colli di bottiglia non individuabili durante la realizzazione. 3 I compiti dell amministratore Per poter svolgere il proprio compito l amministratore deve conoscere al meglio le modalità di funzionamento del DBMS Quali indici? Quali piani di accesso? Di quante risorse necessita una certa operazione? Su quali componenti si può intervenire? Il principale componente da studiare per poter rispondere a queste domande è l ottimizzatore. 4 2
3 Fasi dell esecuzione Il Parser esegue l analisi lessicale e sintattica dell interrogazione (parsing) e di convalida degli elementi referenziati (check semantico) Il parser produce una prima rappresentazione interna non dichiarativa chiamata: albero di esecuzione L ottimizzatore trasforma l albero di esecuzione al fine di ottimizzare le performance del sistema L ottimizzatore sceglie quali algoritmi utilizzare per implementare gli operatori di algebra relazionale presenti nell albero di esecuzione Il generatore del codice traduce l albero di esecuzione creato in codice procedurale vero e proprio Interrogazione SQL Scansione, parsing e validazione Albero di esecuzione Ottimizzatoredelle interrogazioni Piano di esecuzione Generatore del codice Codice procedurale eseguibile Processore runtime Risultato dell interrogazione 5 Check semantico: un esempio La fase di check semantico si basa sulle informazioni presenti nel Data Dictionary Supponendo di avere la seguente query: SELECT P_Name from Part; In fase di check semantico verranno eseguite interrogazioni del tipo: SELECT * FROM DBA_TABLES WHERE TABLE_NAME = 'PART' AND OWNER = 'USERSI' SELECT * FROM DBA_TAB_COLUMNS WHERE TABLE_NAME = 'PART' AND COLUMN_NAME='P_Name' AND OWNER = 'USERSI' 6 3
4 Traduzione dell interrogazione SQL è un linguaggio dichiarativo ossia specifica cosa deve essere recuperato ma non come ciò deve essere fatto. Il come è un compito che viene demandato al DBMS che traduce l interrogazione in un equivalente espressione in algebra relazionale estesa che verrà in seguito ottimizzata L algebra relazionale deve essere estesa per elaborare interrogazioni che prevedano operazioni non previste nell algebra standard : aggregazione, ordinamento, ecc. Le interrogazioni SQL vengono divise in blocchi che formano le unità base traducibili in operatori algebrici e ottimizzabili Un blocco di un interrogazione contiene una singola espressione SELECT-FROM-WHERE-GROUP BY-HAVING 7 Uno DB di esempio IMP(I_SSN,I_Nome,I_Cognome,I_DataN,I_Indirizzo,I_Sesso, I_Stipendio,I_Super:IMP,I_ND:DIP) DIP(D_Numero,D_Nome,D_SSNDir:IMP,D_DataInizio) SEDIDIP(S_NumeroDip:DIP,S_Sede) PROG(P_Numero,P_Nome,P_Sede,P_Dipartimento:DIP) LAVORASU(L_SSNImp:IMP,L_Prog:PROG) PERSONA_A_CARICO(C_SSN:IMP,C_NomeP,C_Sesso,C_DataN,C_Parentela) 8 4
5 Traduzione dell interrogazione π I_cognome,I_nome (σ I_Stipendio>c (IMP)) select I_Cognome, I_Nome from IMP where I_Stipendio >(select MAX(I_Stipendio) from IMP where I_ND = 5); c=σ MAX(I_Stipendio) (σ I_ND=5 (IMP)) Il blocco interno, corrispondente all interrogazione nidificata richiede un operazione dell algebra estesa L ottimizzatore sceglierà un piano di esecuzione per ogni blocco L ottimizzazione delle interrogazioni nidificate correlate risulta ovviamente più complesso 9 L albero di esecuzione Un albero di esecuzione è una struttura ad albero che corrisponde a una espressione dell algebra relazionale estesa. I suoi nodi foglia sono le relazioni di input dell interrogazione I suoi nodi interni rappresentano le operazioni dell algebra relazionale estesa select P_Numero,P_Dipartimento,I_Cognome,I_Indirizzo,I_DataN from PROG,DIP,IMP where P_Dipartimento=D_Numero AND D_SSNDir=I.SSN AND P_Sede= Cesena π P_Numero,P_Dipertimento,I_Cognome,I_Indirizzo,I_DataN (((σ P_Sede= Cesena (PROG)) P_Dipartimento=D_Numero (DIP)) D_SSNDir=I.SSN (IMP)) 10 5
6 L albero di esecuzione π P_Numero,P_Dipertimento,I_Cognome,I_Indirizzo,I_DataN 4 3 D_SSNDir=I.SSN P_Dipartimento=D_Numero 2 I σ P_Sede= Cesena 1 D P L albero di esecuzione rappresenta uno specifico ordine delle operazioni Il nodo (1) deve essere disponibile per iniziare l operazione (2) Il nodo (2) deve essere disponibile per iniziare l operazione (3) 11 L albero di esecuzione L albero di esecuzione così specificato non è ancora direttamente eseguibile da un processore run-time poiché le singole operazioni specificate nei suoi nodi possono essere eseguite in molti modi diversi Accesso a tabella: sequenziale, con indice Join: nested loop, sort merge, hash join La comprensione di un albero di esecuzione richiede la conoscenza delle operazioni che possono essere contenute nei suoi nodi 12 6
7 Gli indici Un indice è una struttura dati accessoria per accedere velocemente ai dati delle relazioni sulla base di una chiave di ricerca L idea di base è quella di associare ai dati una tabella nella quale la tupla i-esima memorizza una coppia del tipo (k i,p i ) dove: k i è un valore della chiave di ricerca su cui l indice è costruito p i è un riferimento al record con valore di chiave k i I DBMS dispongono di più tipologie di indici ognuna adatta a un particolare tipo di dato o a un particolare tipo di accesso Indici B + Tree Indici Bitmap Indici di join 13 Gli indici Più indici possono essere usati contemporaneamente nell ambito della stessa query La scelta di quali e quanti indici utilizzare è (normalmente) demandata all ottimizzatore ed è trasparente agli utilizzatori La scelta di quali e quanti indici costruire è compito del progettista e dell amministratore del sistema 14 7
8 I B + Tree Un indice B + -Tree per un attributo c di una relazione R è un albero bilanciato che consente accessi associativi alle tuple di R in base ai valori della chiave c. Le foglie dell'albero, collegate tra loro in sequenza, contengono i puntatori ai record (RID - Row Identifier), mentre i nodi interni costituiscono una mappa per consentire una rapida localizzazione delle chiavi Pagine dati Pagine dati Pagine dati 15 I B + Tree I B + Tree possono essere: Primary index: un solo record per ogni valore di chiave Secondary index: più record per ogni valore di chiave. In quest ultimo caso le foglie contengono la lista di RID relative alle tuple che presentano un particolare valore di chiave. Per ricercare un particolare valore v si discende l albero in base alla mappa dei puntatori; tramite la foglia individuata si accede al blocco dati in cui sono memorizzati i record che presentano il valore di chiave v. Per eseguire una ricerca su un intervallo di valori [a, b] è sufficiente scendere nell albero utilizzando a come valore di chiave, quindi seguire la sequenza di nodi foglia fino a che non si incontra un valore superiore a b. 16 8
9 I B + Tree Ogni nodo di un B + Tree può ospitare un numero variabile di separatori (o chiavi) compreso tra g (grado) e 2 g a seconda della sua dimensione D, e della lunghezza dei puntatori len(p) e dei separatori stessi len(k): 2g len(k) + (2g+1) len(p) D g = 2 D len( p) ( len( k) + len( p) ) La dimensione di un B + Tree dipende da molteplici fattori (es. lunghezza dei separatori, lunghezza delle RID, dimensione della pagina di disco) e può variare a causa delle operazioni di bilanciamento. Una stima approssimativa della dimensione può essere fornita dal numero delle foglie dell albero che è pari a: NK len( k) + NR len( p) NL = D u dove NK è il numero di valori distinti di chiave, NR è il numero delle tuple da indicizzare, len(k) e len(p) rappresentano rispettivamente la lunghezza delle chiavi delle tuple e dei puntatori ai blocchi dati, infine u rappresenta il fattore di riempimento dei nodi. 17 I B + Tree Il B + -Tree è una strutture bilanciata, ossia garantisce che l altezza h dell albero sia sempre costante per tutti i percorsi dalla radice alle foglie. A tal fine vengono utilizzate delle procedure di bilanciamento che si innescano a fronte di cancellazioni (catenation, underflow) e inserimenti (split). A parità del numero di foglie NL, l altezza di un B + -Tree può variare in base al livello di riempimento dei nodi: Tutti i livelli prima delle foglie pieni (2g +1) h-1 NL log 2g+ 1 NL h 2 + logg NL 2 La radice ha 2 soli puntatori e ogni livello intermedio g+1 2 (g +1) h-2 NL 18 9
10 Gli indici bitmap Un indice bitmap su un attributo è composto da una matrice di bit contenente: Tante righe quante sono le tuple della relazione Tante colonne quanti sono i valori distinti di chiave dell attributo Il bitmap (i,j) è posto a TRUE se nella tupla i-esima è presente il valore j-esimo Esempio: Indice sul campo Posizione della tabella impiegati Ingegnere Consulente Manager Programmatore Assistente Ragioniere L impiegato corrispondente al RID 1 è un Manager RID Ing. Cons. Man. Prog. Assis. Rag Implementazione dei bitmap Normalmente i bitmap sono associati a B + -Tree le cui foglie contengono vettori di bit invece di RID Programmatore Naviga il B + -Tree Carica i vettori di bit corrispondenti Determina quali bit sono posti a TRUE Recupera le tuple corrispondenti ai RID RID Ing. Cons. Man. Prog. Assis. Rag ,
11 I vantaggi degli indici bitmap Lo spazio richiesto su disco può essere molto ridotto I/O è molto basso poiché vengono letti solo i vettori di bit necessari Ottimi per interrogazioni che non richiedono l accesso ai dati Permettono l utilizzo di operatori binari per l elaborazione dei predicati Esempio: Quanti maschi in Romagna sono assicurati? RID Sesso Assic. Regione 1 M No LO M Sì E/R F No LA = 2 4 M Sì E/R Occupazione su disco Gli indici bitmap sono adatti ad attributi con una ridotta cardinalità poiché ogni nuovo valore distinto di chiave richiede un ulteriore vettore di bit All aumentare del numero di chiavi distinte aumenta la sparsità della matrice Esempio: NR= Len(Pointer)= Len(Key) = 4 8 bit B-tree NK Len(Key) + NR Len(Pointer) Bitmap NK Len(Key) +NR NK/8 Spazio su disco (MB) Bitmap VS B-Tree NK B-Tree Bitmap La compressione delle matrici riduce il fattore di crescita della dimensione 22 11
12 Algoritmi di sort Gli algoritmi di ordinamento sono tra i più utilizzati nell ambito delle operazioni SQL. Non vengono utilizzati solo in presenza della clausola ORDER BY ma anche per realizzare operazioni di JOIN, PROIEZIONE (con opzione distinct), GROUP BY L ordinamento può essere evitato quando esiste un indice tale da permettere l accesso ordinato alle tuple Viste le dimensione delle tabelle in gioco, nell ambito dei DB si utilizzano tecniche di ordinamento esterno, ossia che non richiedono di mantenere tutti i dati contemporaneamente nella memoria centrale L algoritmo più utilizzato è il sort-merge 23 Sort-Merge L algoritmo ordina dapprima porzioni di file (run) in grado di essere caricate singolarmente in memoria centrale, ad esempio con un algoritmo di QuickSort. Le run ordinate e salvate su disco vengono poi unite progressivamente, Z alla volta, creando porzioni via via più grandi Le prestazioni dell algoritmo dipendono fortemente dalla dimensione del buffer della memoria centrale dove vengono effettivamente eseguite le operazioni di ordinamento e di fusione
13 Sort-Merge Per semplicità consideriamo il caso base a Z = 2 vie, e supponiamo di avere a disposizione solo NB = 3 buffer in memoria centrale g 24 a 19 d 21 c 33 b 14 e 16 r 16 d 31 m 3 p 2 d 7 a 14 Input Sort interno a 19 d 21 g 24 b 14 c 33 e 16 d 31 m 3 r 16 a 14 d 7 p 2 1-page runs a 19 b 14 c 33 d 21 e 16 g 24 a 14 d 7 d 31 m 3 p 2 r 16 2-page runs Merge 3 record per pagina a 14 a 19 b 14 c 33 d 7 d 21 d 31 e 16 g 24 m 3 p 2 r 16 Output 25 Sort-Merge Nel caso base Z = 2 si fondono 2 run alla volta Con NB = 3, si associa un buffer a ognuna delle run, il terzo buffer serve per produrre l output, 1 pagina alla volta Si legge la prima pagina da ciascuna run e si può quindi determinare la prima pagina dell output; quando tutti i record di una pagina di run sono stati consumati, si legge un altra pagina della run Input (run) buffer Output buffer a 14 a 19 a 14 a 14 a 19 b 14 c 33 d 7 d 31 a 19 b 14 Write to disk when full b 14 c 33 d 7 a 19 b 14 c 33 d 21 e 16 g 24 Read from disk when consumed a 14 d 7 d 31 m 3 p 2 r 16 d 21 d 31 e 16 g 24 m 3 p 2 r
14 Sort-Merge Le prestazioni dell algoritmo dipendono fortemente dalla dimensione del buffer della memoria centrale dove vengono effettivamente eseguite le operazioni di ordinamento e di fusione. Nel caso base Z = 2 e NB = 3 si può osservare che: Nella fase di sort interno si leggono e si riscrivono NP pagine Ad ogni passo di merge si leggono e si riscrivono NP pagine Il numero di passi fusione è pari a log 2 NP, in quanto ad ogni passo il numero di run si dimezza Il costo complessivo è pertanto pari a: 2 * NP + 2 * NP * log 2 NP = 2 * NP * ( log 2 NP + 1) Esempio: per ordinare NP = pagine sono necessarie operazioni di I/O; se ogni I/O richiede 20 msec, il sort richiede secondi, ovvero circa 1h 15 minuti! 27 Sort-Merge Una prima osservazione è che nel passo di sort interno, avendo a disposizione NB>3 buffer, si può utilizzare il buffer per portare a FS>1 la lunghezza di ciascuna run interna, il che porta a un costo di: 2 * NP * ( log 2 NP/FS + 1) Esempio: con NP = 8000 pagine e NB = 11 si può portare FS=5 e quindi I/O pari a 1 ora e 4 minuti Miglioramenti sostanziali si possono ottenere se, avendo NB > 3 buffer a disposizione, si fondono Z = NB 1 run alla volta (1 buffer è per l output) In questo caso il numero di passi di fusione è logaritmico in NB 1, il che determina un costo pari a: 2 * NP * ( log NB-1 NP + 1) Esempio: con NP = pagine e NB = 11 si hanno I/O, per un tempo stimato pari a sec 21 minuti a 14 a 19 b 14 a 19 d 21 g 24 b 14 c 33 e 16 d 31 m 3 r 16 a 14 d 7 p 2 a 19 b 14 d 31 a 14 d 21 g 24 c 33 e 16 m 3 r 16 d 7 p
15 Sort-Merge in presenza di selezioni Nel caso sulla tabella da ordinare insista un criterio di selezione locale, il numero di tuple da ordinare, EP, sarà ridotto in base al fattore di selettività del predicato Sel(Pred): EP= NP*Sel(Pred) (NP + EP) + 2 EP log NB-1 EP Una curiosità: un tipico DBMS ordina 1 milione di record da 100 byte in 15 minuti. Il record è di 3.5 secondi con un sistema SGI, 12 CPU, 96 dischi e 2 GB di ram 29 Accesso a tabelle Per selezionare i record di una tabella (o file) si possono utilizzare vari algoritmi di ricerca detti algoritmi di scansione (table scan). Se l algoritmo di ricerca prevede l utilizzo di un indice si parla di scansione basata su indice (index scan) Ricerca lineare o scansione sequenziale: legge ogni tupla della tabella e verifica se soddisfa la condizione di selezione. Si applica se la tabella è disordinata rispetto al campo su cui deve essere fatta la selezione In caso di esistenza del record si accede in media a (NP+1)/2 blocchi nel caso peggiore a NP blocchi In caso di non esistenza del record si accede a NP blocchi 30 15
16 Accesso a tabelle Ricerca binaria: è applicabile se il file è ordinato rispetto al campo su cui deve essere fatta la selezione In caso di esistenza del record si accede in media a log 2 NP blocchi nel caso peggiore a log 2 NP +1 blocchi In caso di non esistenza del record si accede a log 2 NP +1 blocchi Ricerca con indice: la sequenza di operazioni da svolgere per recuperare i record corrispondenti a un valore di chiave è la seguente 1. Si discende l indice fino alle foglie 2. Si leggono le foglie relative ai valori di interesse 3. Si accede alle pagine dati indicate dai RID presenti nelle foglie 31 Accesso a tabelle Il costo di esecuzione nel caso di accesso con indice varia a seconda dell ordinamento della tabella h: altezza dell indice sel(pred): selettività dell eventuale predicato di selezione sull attributo su cui è costruito l indice NK: numero di valori distinti della chiave EK: numero di valori di chiave che verificano il predicato di selezione NL: numero di foglie dell indice NP: numero di pagine di disco della tabella NT: numero di tuple della tabella Indice clustered: si ha quando le tuple della tabella sono ordinate rispetto all attributo dell indice h-1 + sel(pred) NL + sel(pred) NP Indice Unclustered: si ha quando le tuple della tabella non sono ordinate rispetto all attributo dell indice h-1 + sel(pred) NL + EK Φ(NT / NK,NP) 32 16
17 Accesso a tabelle Si ricorda che la formula di Cardenas: Φ(ER, NP) = NP (1 - (1-1/NP) ER ) min {ER, NP} fornisce una stima del numero di pagine, su un totale di NP, che contengono almeno uno degli ER record da reperire Si noti che le formule precedenti si applicano sia a indici B + -Tree sia a indici bitmap vista la modalità di memorizzazione di questi ultimi. Ovviamente cambia la modalità di calcolo del numero delle foglie 33 Tecniche di join: nested loop È l algoritmo di join più semplice e deriva direttamente dalla definizione dell operazione. Una delle due relazioni coinvolte è designata come esterna e l altra come interna. Supponendo di operare utilizzando due relazioni R e S, R esterna e S interna, e di essere in presenza di due predicati locali F R su R e F S su S, l algoritmo procede ricercando, per ogni tupla t R della relazione esterna che soddisfa F R, tutte le tuple di S che soddisfano F S e che soddisfano il predicato di join F J. Il costo di esecuzione dell algoritmo, espresso in numero di pagine di disco lette, è pari a: costo(r) + ET R costo(s) dove costo(r) e costo(s) misurano i costi di accesso alle relazioni, ET R è il numero atteso di tuple di R che soddisfano il predicato locale F R
18 Tecniche di join: nested loop open R; while not EOF(R) { CurrR= read(r); if (FR(CurrR)) // CurrR verifica il predicato locale { open S; while not EOF(S) { CurrS= read(s); if (FS(CurrS) and FJ(CurrR,CurrS)) then restituisci CurrR + CurrS; } next; close S; } next; } close R; Nel caso più semplice in cui non sono presenti predicati locali e si accede alle relazioni mediante scan sequenziali il costo di esecuzione sarà quindi: NP R + NT R NP S dove NP R e NP S sono rispettivamente il numero di pagine di disco necessarie per memorizzare R e S mentre NT R è il numero di tuple in R. 35 Scelta della relazione interna La scelta della relazione esterna può dipendere da vari fattori: La possibilità di mantenere in memoria centrale tutta la relazione interna porta a scegliere come esterna la relazione con più pagine Se i buffer sono in numero limitato, trascurando il costo di lettura della relazione esterna, si sceglierà R come esterna e S come interna se NT(R) * NP(S) < NT(S) * NP(R), ovvero se: NT(R) / NP(R) < NT(S) / NP(S) che corrisponde a dire che le tuple di R sono più grandi di quelle di S Vi sono però altre considerazioni da fare, non meno importanti 36 18
19 Scelta della relazione interna L ordine con cui vengono generate le tuple del risultato coincide con l ordine eventualmente presente nella relazione esterna R A B 22 a 32 z 45 h 87 s S A C D 22 z 1 45 k 3 22 s 3 87 f 5 87 c 6 45 h 8 32 g 9 R esterna A C D B 22 z 1 a 22 s 3 a 32 g 9 z 45 k 3 h 45 h 8 h 87 f 5 s 87 g 9 s S esterna A C D B 22 z 1 a 45 k 3 h 22 s 3 a 87 f 5 s 87 c 6 s 45 h 8 h 32 g 9 z Pertanto se l ordine che si genera è interessante, ad esempio perché la query contiene ORDER BY R.A, la scelta della relazione esterna può risultarne influenzata 37 Nested loop in presenza di indici Data una tupla della relazione esterna R, la scansione completa della relazione interna S può essere sostituita da una scansione basata su un indice costruito sugli attributi di join di S, secondo il seguente schema: R A B 22 a 32 z 45 h 87 s 22 Valore dell attributo di join Indice su S.A S A C D 22 z 1 45 k 3 22 s 3 87 f 5 87 c 6 45 h 8 32 g 9 L accesso alla relazione interna mediante indice porta in generale a ridurre di molto i costi di esecuzione del Nested Loops Join 38 19
20 Nested loop in presenza di indici IMP(I_SSN,I_Nome,I_Cognome,I_DataN,I_Indirizzo,I_Sesso,I_Stipendio,I_Super:IMP,I_ND:DIP) DIP(D_Numero,D_Nome,D_SSNDir:IMP,D_DataInizio select I_SSN, I_Nome, I_Cognome, D_Nome from IMP,DIP where I_ND=D_Numero and I_Sesso= M I_ND=D_Numero 2 σ I_Sesso= M 1 DIP IMP costo(r) + ETR costo(s) Senza indice Con indice costo(s) = h / NK NL + sel(pred) NP clustered costo(s) = NPS costo(s) = h / NK NL + 1 Φ(NR / NK,NP) unclustered 39 Tecniche di join: nested block E una versione più sofisticata del nested loop, basata sullo stesso principio di esecuzione. Sfrutta un buffer di B pagine in memoria centrale per ridurre il numero di scansioni della relazione interna S. La scansione di S viene eseguita per ogni gruppo di (B-1) pagine della relazione esterna R che vengono preventivamente caricate in memoria Il costo di esecuzione del join in termini di pagine di disco lette si riduce proporzionalmente alla dimensione del buffer. Assumendo l assenza di predicati locali diventa : NP R + NP R / (B-1) NP S R esterna S interna Buffer 40 20
21 Tecniche di join: sort merge Sfrutta l ordinamento delle tuple rispetto all attributo di join per ridurre il numero dei confronti. Le due tabelle R e S devono essere quindi preventivamente ordinate su tale attributo, ciò consente di scandirle parallelamente alla ricerca di coppie di tuple con lo stesso valore. sort R on c R ; sort S on c S ; CurrR = read(r); CurrS = read(s); while not EOF(R) and not EOF(S) if (CurrR.c R = CurrS.c S ) then { restituisci CurrR + CurrS; CurrR = read(r); CurrS = read(s); } else next; close R; close S; if (CurrR.c R > CurrS.c S ) then CurrS = read(s); else CurrR = read(r); Se le due relazioni sono già ordinate il vantaggio computazionale nell utilizzo del sort-merge rispetto al nested loop è evidente poiché le tabelle vengono scandite una sola volta. Quindi il costo di esecuzione è pari a: NP R + NP S Nel caso in cui le due relazioni non siano ordinate è necessario valutare il trade-off dato dal costo di ordinamento. Quindi il costo di esecuzione è pari a: Sort(R) + Sort(S) + NP R + NP S 41 Tecniche di join: hash join Sfruttando le proprietà delle funzioni di hash è possibile ridurre il numero di confronti da effettuare per eseguire il join senza dover ordinare preventivamente le relazioni. Date due relazioni R e S da porre in equi-join sugli attributi c R e c S (c R = c S ) 1. Si applica ai valori di chiave della prima, detta relazione di build, una funzione di hash h che partizioni i valori del dominio di c R in B frammenti (bucket). 2. Si applica la medesima funzione h ai valori di c S. La relazione S, detta relazione di probe, verrà similmente partizionata e sarà quindi possibile eseguire il join confrontando tra loro solo le tuple appartenenti a partizioni corrispondenti. c R R , h h , , c S S Tabella di hash 42 21
22 Tecniche di join: hybrid hash join Il costo del join può essere stimato come la scansione di entrambe le tabelle e quindi pari a NP R + NP S Qualora, a causa delle sue dimensioni, la tabella di hash (hash table) non potesse essere mantenuta in memoria l hash join dovrebbe essere modificato consentendo la gestione della stessa su memoria di massa. L hybrid hash join risolve il problema utilizzano due diverse funzioni di hash h 1 e h 2 : la prima suddivide le tuple delle relazioni in B 1 frammenti di dimensione sufficientemente limitata da far si che le hash table costruite utilizzando la funzione h 2 possano essere mantenute in memoria centrale. 43 Tecniche di join: hybrid hash join Con questa tecnica il processo di join può essere così riassunto: Fase 1 build: R viene letta e alle tuple vengono applicati eventuali predicati locali; alle tuple che risultano eligibili per il join viene applicata la funzione h 1. Se il valore corrente di c R è associato al primo dei B 1 bucket la tupla viene mantenuta in memoria e a c R viene direttamente applicata la funzione h 2 per creare la hash table in memoria centrale; in caso contrario, la tupla viene salvata, in base alla funzione h 1, in uno dei B 1 1 file predisposti su disco. Fase 1 probe: S viene letta e alle tuple vengono applicati eventuali predicati locali; alle tuple che risultano eligibili per il join viene applicata la funzione h 1. Se il valore corrente di c S è associato al primo dei B 1 bucket la tupla viene mantenuta in memoria e a c S viene direttamente applicata la funzione h 2 identificando così il bucket della tabella di hash in memoria centrale con i cui elementi dovranno essere effettivamente effettuati i confrontati. Nel caso in cui il valore corrente di c S non sia associato al primo bucket, la tupla è salvata, in base alla funzione h 1, in uno dei B 1 1 file predisposti su disco. Fase i = 2... B 1 build: l i-esimo file della relazione di build R viene letto in memoria centrale e viene costruita la tabella di hash utilizzando la funzione h 2. Fase i = 2... B1 probe: l i-esimo file della relazione di probe S viene letto in memoria centrale e ai valori di c S viene applicata la funzione di hash h 2 per determinare il bucket con cui effettuare il confronto
23 Tecniche di join: hybrid hash join Hash table in memoria centrale h 2 h 2 R h 1 h 1 S File in memoria secondaria Per l hybrid hash join il costo di esecuzione può essere stimato come: 2 (NP R + NP S ) + NP R + NP S = 3 (NP R + NP S ) 45 Tecniche di proiezione Se l insieme di attributi su cui proiettare rappresenta una chiave della relazione la proiezione è semplice La cardinalità del risultato è la stessa della relazione di partenza Il risultato si ottiene riportando solo i valori degli attributi di interesse Pertanto il costo di esecuzione è pari alla scansione delle NP pagine della relazione Se l insieme di attributi su cui proiettare non rappresenta una chiave della relazione è necessario eliminare le tuple duplicate La cardinalità del risultato è minore di quella della relazione di partenza L eliminazione viene effettuata mediante ordinamento e mantenimento di una sola delle tuple che presentano gli stessi valori di ordinamento Pertanto il costo di esecuzione viene stimato come costo di ordinamento della relazione 46 23
24 Tecniche di aggregazione L operazione di aggregazione (clausola GROUP BY in SQL), non prevista nell algebra relazionale standard, comporta l applicazione un operatore di aggregazione a gruppi di tuple con valori omogenei rispetto agli attributi di aggregazione. Il risultato si ottiene: Ordinando le tuple sulla base di tutti gli attributi coinvolti nella clausola di GROUP BY Applicando l operatore agli attributi coinvolti nella formula di aggregazione che presentano gli stessi valori di ordinamento Il costo di esecuzione può essere stimato come costo di ordinamento della relazione 47 Tecniche di aggregazione In caso di selezione dopo un aggregazione (clausola HAVING in SQL), può essere necessario calcolare la cardinalità del risultato dell aggregazione Una stima può essere ottenuta utilizzando la formula di cardenas Φ(R, N) dove: R è il numero di record da aggregare N è il numero di potenziali valori distinti del group-by set a valle del raggruppamento Se il valore di R è limitato Φ(R, N) < N. Ossia tra gli R record potrebbero non esserci istanze corrispondenti ad alcuni dei valori del group-by set aggregato 48 24
25 Riassumendo Dimensione di una relazione: NP = NR len(t) / (D u) Costo di ordinamento: 2 NP ( log NB-1 NP +1) Costo di ordinamento con selezioni : (NP + EP) + 2 EP log NB-1 EP Scansione sequenziale tabelle in media a (NP+1)/2 blocchi nel caso peggiore a NP blocchi In caso di non esistenza del record si accede a NP blocchi Scansione binaria tabelle in media a log 2 NP blocchi nel caso peggiore a log 2 NP + 1 blocchi In caso di non esistenza del record si accede a log2np +1 blocchi Accesso a tabelle con indice Numero di foglie del B + -Tree: NL = ( NK len(k) + NR len(p) ) / ( D u ) Numero di foglie del Bitmap: NL = (NK len(k) + NK NR / 8 ) / D Indice clustered h EK / NK NL + sel(pred) NP Indice Unclustered h EK / NK NL + EK Φ(NR / NK,NP) Proiezione Mantenendo la chiave della relazione: NP Perdendo la chiave della relazione: assimilabile al costo di ordinamento Raggruppamento: assimilabile al costo di ordinamento 49 Riassumendo: i join Nested loop: senza predicato di selezione NP R + NR R NP S con predicato di selezione NP R + (sel(pred) NR R ) costo(s) Con indice clustered costo(s) = h / NK NL + sel(pred) NP Con indice unclustered costo(s) = h /NK NL + 1 Φ(NR / NK,NP) Nested block: NP R + NP R / (B-1) NP S Sort merge join Tabelle già ordinate NP R + NP S Tabelle da ordinare Sort(R) + Sort(S) + NP R + NP S Hash join: NP R + NP S Hybrid Hash join: 3(NP R + NP S ) 50 25
26 e in ORACLE Il piano di accesso ai dati viene costruito componendo le modalità di base di accesso alle tabelle. Elenchiamo di seguito i principali e rimandiamo al manuale (Designing and Tuning for Performance Tabella 12-3) per un elenco completo, necessario all interpretazione degli alberi di esecuzione Table access: accede ai dati presenti su una tabella. Può essere dei seguenti tipi Full: legge sequenzialmente tutte le righe di una tabella verificando eventuali condizioni sui suoi attributi. By Rowid: l accesso alle singole tuple di una tabella viene effettuato sfruttando il relativo RID che specifica il blocco dati e la posizione all interno del blocco dati in cui è memorizzata la tupla. Normalmente questo tipo di accesso segue l accesso a un indice. By Index RowID: l accesso è basato sul RID che è memorizzato in un indice Sample table scan: recupera in modo random una porzione di dati da una tabella. Questa modalità è disponibile solo in presenza della clausola sample. 51 e in ORACLE Index Scan: legge i dati da un indice sulla base di una o più delle sue chiavi. Le informazioni contenute nell indice possono essere sufficienti per rispondere all interrogazione, in caso contrario vengono recuperate le RID che permetteranno l accesso alle tabelle. L index scan può essere dei seguenti tipi: Unique scan: utilizzabile se deve essere recuperata una sola tupla Range scan: utilizzabile se devono essere recuperate più tuple relative a un range di valori. Full scan: utilizzabile se esiste un predicato che coinvolge un attributo dell indice o, in assenza, di predicati per evitare un operazione di sort. Fast full scan: alternativo al full scan viene impiegato quando l indice contiene tutti i campi necessari all interrogazione e non è quindi necessario accedere alle tabelle
27 e in ORACLE Join: prende in input due insiemi di tuple e restituisce il loro join. In base alla tecnica utilizzata può essere: Hash Nested loops Merge join Sort: identifica tutte le operazioni di ordinamento. In base al tipo di utilizzo che viene fatto dei dati ordinati si ha: Aggregate: restituisce una singola tupla che è il risultato dell applicazione di un operazione di raggruppamento a un insieme di tuple Unique: utilizzato per l eliminazione dei duplicati da un insieme di tuple Group by: ordina un insieme di tuple in più gruppi in corrispondenza della clausola GROUP BY Join: ordina un insieme di tuple in previsione di un operazione di join Order by: ordina un insieme di tuple in corrispondenza della clausola ORDER BY 53 L ottimizzatore Compito dell ottimizzatore è costruire un albero di esecuzione ottimizzato a partire dall albero di esecuzione iniziale Otimizzatori rule-based: utilizzano regole euristiche che considerano la struttura dell albero di esecuzione iniziale e le caratteristiche del DBMS (indici, modalità di accesso ai dati a disposizione) per determinare il piano di esecuzione di costo minimo Ottimizzatori cost-based: utilizzano in più le statistiche relative all istanza dei dati per calcolare il costo effettivo di esecuzione dell informazione L esecuzione di una istruzione SQL su due istanze diverse di uno stesso schema di database potrà utilizzare due piani di esecuzione diversi se si utilizza un ottimizzatore cost-based, mentre utilizzerà lo stesso piano se l ottimizzatore è di tipo rule-based
28 EXPLAIN PLAN EXPLAIN PLAN è il comando utilizzato da ORACLE per visualizzare il piano di esecuzione prescelto dall ottimizzatore. La visualizzazione in formato testuale è organizzata in una struttura ad albero che specifica: L operazione eseguita L oggetto su cui agisce l operazione Il numero di righe coinvolte Il costo dell operazione (non è espresso in unità di misura, è un numero puro calcolato dall ottimizzatore di Oracle e utilizzabile per confronti) Le informazioni relative al piano vengono memorizzate nella PLAN_TABLE che fa parte dello schema 55 EXPLAIN PLAN un esempio select * from LINEITEM, PART where p_name >'qqq' and p_partkey=l_partkey 56 28
29 EXPLAIN PLAN un esempio select * from LINEITEM, PART where p_name >'qqq' and p_partkey=l_partkey Modalità di accesso Oggetto su cui ha effetto l operazione 57 L ottimizzatore In generale, gli ottimizzatori cost-based forniscono soluzioni migliori. Si utilizza un ottimizzatore rule-based quando: Mantenere le statistiche è troppo oneroso I piani di accesso sono semplici Oracle dispone sia di un ottimizzatore rule-based, sia di un ottimizzatore cost-based
30 Principi di base per l ottimizzazione Applicare per prime le operazioni che riducono la dimensione dei risultati intermedi Anticipare le operazioni di selezione e di raggruppamento per ridurre il numero delle tuple Anticipare le operazioni di proiezione per ridurre il numero degli attributi Applicare per prime le operazioni join e selezione il cui risultato contiene un numero ridotto di tuple Comporta un riordinamento dei nodi dell albero di esecuzione 59 Equivalenza tra alberi di esecuzione Più espressioni di algebra relazionale possono essere equivalenti ossia possono determinare lo stesso risultato per ogni stato legale del DB Di conseguenza esistono più alberi di esecuzione che determinano lo stesso risultato, ma con costi di esecuzione diversi Per passare da un espressione dell algebra relazionale all altra si sfruttano le regole di equivalenza degli operatori Nel seguito verranno indicate le regole di base utilizzate nell ambito dell ottimizzazione 60 30
31 Regole di trasformazione 1. Cascata di selezioni: Una condizione di selezione congiuntiva può essere spezzata in una sequenza di singole operazioni σ σ c1 AND c2 AND AND cn (R) σ c1 (σ c2 ( (σ cn (R)) )) 2. Commutatività della selezione σ c1 (σ c2 (R)) σ c2 (σ c1 (R)) 3. Cascata di proiezioni: In presenza di una sequenza di operatori π si possono ignorare tutte le proiezioni fuorché l ultima π Lista1 (π Lista2 ( (π Listan (R)) )) π Lista1 (R) 4. Commutatività di σ rispetto a π: se la condizione di selezione c coinvolge solo gli attributi appartenenti alla lista di proiezione A1, An, le due operazioni possono essere commutate π A1,A2,,An (σ c (R)) σ c (π A1,A2,,An (R)) 5. Commutatività di R c S S c R 61 Regole di trasformazione 6. Commutatività di rispetto a σ: Se tutti gli attributi della condizione di selezione c coinvolgono solamente gli attributi di una delle relazioni su cui viene eseguito il join, le due operazioni possono essere commutate σ c (R S) σ c (R) S Alternativamente se la condizione c può essere scritta, sfruttando (1), come c1 AND c2 dove c1 e c2 operano rispettivamente su attributi di R e S allora è possibile effettuare la seguente trasformazione σ c (R S) σ c1 (R) σ c2 (S) 7. Commutatività di rispetto a π: Sia la lista di proiezione L=A1,,An,B1,..Bn dove A1,,An R e B1,..Bn S, se la condizione di join c coinvolge solamente attributi in L allora le due operazioni possono essere commutate: π L (R c S) π A1,,An (R) c π B1,,Bn (S) Se la condizione di join include oltre a quelli in L ulteriori attributi di R e S: An+1, An+k,Bn+1,,Bn+k. Questi vanno mantenuti sino al join e quindi è necessaria un ulteriore operazione di proiezione π L (R c S) π L (π A1,,An, An+1,,An+k (R) c π B1,,Bn,Bn+1,,Bn+k (S) 62 31
32 Regole di trasformazione 8. Associatività di (R c1 S) c2 T R c1 (S c2 T) 9. Composizione di E σ : se la condizione c di un operazione di selezione che segue un operazione prodotto cartesiano rappresenta una condizione di join allora σ c (R S) R c S 63 Un algoritmo euristico di ottimizzazione basato su regole 1. Scomporre i predicati di selezione congiuntiva utilizzando la regola (1) di equivalenza tra espressioni di AR. In questo modo si garantisce un maggior grado di libertà per lo spostamento delle operazioni di selezione in modo da anticiparle quanto più possibile 2. Commutare le operazioni di selezione rispetto alle altre operazioni (regole (2)(4) e (6)), in modo da anticiparle quanto più possibile conformemente a quanto permesso dagli attributi coinvolti nelle selezioni (push-down selezione) 3. Usando la regola (9) si sostituiscano con operazioni di join le operazioni di prodotto cartesiano seguite da operazioni di selezione 4. Usando le regole (5) e (8) si modifichi la sequenza di esecuzione delle operazioni di join in modo da anticipare il join su relazioni in cui insistono operazioni di selezione più restrittive 5. Sfruttando le regole (3)(4)(7) si anticipino quanto più possibile le liste degli attributi di proiezione creando, quando necessario nuove operazioni di proiezione. Dopo ogni operazione di proiezione, dovrebbero essere mantenuti solamente gli attributi necessari alle operazioni successive e alla generazione del risultato dell interrogazione (push-down proiezioni) 64 32
33 Ottimizzazione euristica Un esempio select I_Cognome from PROG, LAVORASU, IMP where P_Nome= Aquarius AND P_Numero = L_Prog and I_SSN=L_SSNImp and I_DataN > π I_Cognome 3 2 σ P_Nome= Aquarius AND P_Numero = L_Prog and I_SSN=L_SSNImp and I_DataN > I P L 65 Ottimizzazione euristica Un esempio 7 π I_Cognome 6 σ I_SSN=L_SSNIm 5 σ P_Numero = L_Prog 3 4 σ I_DataN > I σ P_Nome= Aquarius 1 P L Push-down delle selezioni 66 33
34 Ottimizzazione euristica Un esempio 5 π I_Cognome 4 I_SSN=L_SSNIm P_Numero = L_Prog 2 1 σ I_DataN > σ P_Nome= Aquarius 3 L I P Sostituzione con join 67 Ottimizzazione euristica Un esempio 5 π I_Cognome 4 P_Numero = L_Prog I_SSN=L_SSNIm 2 3 σ I_DataN > L P σ P_Nome= Aquarius I Commutazione join 68 34
35 Ottimizzazione euristica Un esempio 8 πi_cognome 7 P_Numero = L_Prog I_SSN=L_SSNImp 4 6 π P_Numero π L_Prog,L_SSNImp πi_cognome2 3 5, I_SSN σ Data_N > L P σ P_Nome= Aquarius I Push-down proiezioni 69 Ottimizzazione rule-based Gli ottimizzatori rule-based definiscono regole euristiche per scegliere le modalità di accesso a tabelle e per determinare gli algoritmi di join da utilizzare Per esempio l ottimizzatore rule-based di ORACLE utilizza 15 modalità diverse per l accesso a tabelle, al rank più basso del percorso corrispondono costi presunti di accesso inferiori Path 1: Single Row by Rowid Path 2: Single Row by Cluster Join Path 3: Single Row by Hash Cluster Key with Unique or Primary Key Path 4: Single Row by Unique or Primary Key Path 5: Clustered Join Path 6: Hash Cluster Key Path 7: Indexed Cluster Key Path 8: Composite Index Path 9: Single-Column Indexes Path 10: Bounded Range Search on Indexed Columns Path 11: Unbounded Range Search on Indexed Columns Path 12: Sort-Merge Join Path 13: MAX or MIN of Indexed Column Path 14: ORDER BY on Indexed Column Path 15: Full Table Scan 70 35
36 Ottimizzazione rule-based Inizio I produttori di DBMS rendono note con riluttanza le regole secondo cui operano i propri ottimizzatori. Nel seguito è riportato un esempio relativo all ottimizzatore RULE-BASED di redbrick, in ambito data warehousing un indice IXFT 1 sulla FT che inizia con k 1 chiave di DT 1? Sì Accedi a DT1 Accedi a IXFT1 La query richiede di accedere ai dati della FT? Si Accedi a FT tramite i RID di IXFT1 1 No Su quante DT è definita una condizione? Esegui l hash join tra DT1 e FT No 0 Esegui il join con tutte le DT i coinvolte nella query e tali che DTi DT1 2 o più DT condizionata accedi alla tabella e recupera le RID di FT che soddisfano la condizione Esegui la RID intersection per ricavare le tuple di FT che soddisfano tutte le condizioni RID che soddisfa le condizioni accedi a FT ed esegui il join con tutte le DT richieste dal pattern in uscita Scandisci FT e per ogni tupla esegui il join con tutte le DT Esegui il raggruppamento delle tuple Fine 71 Ottimizzatori cost-based Stimano l effettivo costo di esecuzione di una query mediante funzioni di costo che modellano il comportamento dei diversi algoritmi utilizzati Le diverse modalità di esecuzione delle singole operazioni vengono combinate in base alla struttura dell albero di esecuzione; vista la dimensione dello spazio di ricerca, il costo di esecuzione viene stimato solo per un sottoinsieme (determinato in base a criteri euristici) dei possibili piani Per poter operare correttamente gli ottimizzatori cost-based devono avere a disposizione statistiche aggiornate sui dati e sugli indici Le funzioni di costo determinano un modello semplificato del sistema e così pure le statistiche, quindi le stime che si ottengono potrebbero non essere esatte 72 36
37 Interrogazioni multi-join Le regole di trasformazione dell algebra lineare (5) e (8) permettono di modificare l ordine dei join e di ottenere espressioni equivalenti. Il numero di alberi alternativi aumenta in modo esponenziale rispetto al numero di relazioni presenti in una query La stima del costo di esecuzione di ogni possibile albero richiederebbe una cospicua quantità di tempo e risorse. Tipicamente gli ottimizzatori cost based si limitano a considerare alberi di esecuzione left-deep (profondità a sinistra) o right-deep (profondità a destra) Un albero left-deep è un albero binario in cui il figlio destro di ogni nodo non foglia è sempre una relazione di base Favoriscono l esecuzione in pipeline dei join senza fare uso di relazioni intermedie: non appena viene prodotta una pagina di tuple risultato del primo join questa può essere utilizzata direttamente come input per i join successivi Il join può sfruttare eventuali strutture dati accessori costruite per le relazioni di base 73 Interrogazioni multi-join 3 2 R4 3 1 R3 1 2 R1 R2 R1 R2 R3 R4 Nell albero di sinistra: Tutte le operazioni di join possono sfruttare eventuali indici costruiti sulle tabelle di base Non appena il join (1) produce una pagina di tuple di risultato si può procedere all esecuzione del join (2) senza dover memorizzare la pagina su disco Un ulteriore modo per ridurre il numero di alberi da considerare potrebbe essere quello di escludere gli alberi che prevedono un prodotto cartesiano in presenza di un albero che non ne prevede 74 37
38 Materializzazione vs pipeline Un semplice modo di eseguire un piano di accesso composto da diversi operatori consiste nel procedere bottom-up, secondo il seguente schema: Si calcolano innanzitutto i risultati degli operatori al livello più basso dell albero e si memorizzano tali risultati in relazioni temporanee Si procede quindi in modo analogo per gli operatori del livello sovrastante, fino ad arrivare alla radice Tale modo di procedere, detto valutazione per materializzazione, è altamente inefficiente, in quanto comporta la creazione, scrittura e lettura di molte relazioni temporanee, relazioni che, se la dimensione dei risultati intermedi eccede lo spazio disponibile in memoria centrale, devono essere gestite su disco Nell esempio precedente i risultati intermedi (1) e (2) potrebbero dar vita a due relazioni temporanee 75 Materializzazione vs pipeline Un modo alternativo di eseguire un piano di accesso è quello di eseguire più operatori in pipeline, ovvero non aspettare che termini l esecuzione di un operatore per iniziare l esecuzione di un altro Nell esempio precedente, la valutazione in pipeline opererebbe così: Si inizia a eseguire il primo Join tra R1 e R2. Appena viene prodotta la prima tupla dell output questa viene passata in input al secondo Join (R2 e R3), che può quindi iniziare la ricerca di matching tuple e quindi produrre la prima tupla del risultato finale della query. La valutazione prosegue cercando eventuali altri match per la tupla prodotta dal primo Join; quando è terminata la scansione di R3, il secondo Join richiede al primo Join di produrre un altra tupla Nel caso di esecuzione in pipeline le stime dei costi viste in precedenza vanno riviste considerando che non tutti i dati vengono letti/scritti su disco quando sono svolte più operazioni in cascata
39 Le statistiche Per valutare i costi delle varie strategie di esecuzione occorre tenere traccia di alcune informazioni necessarie alle funzioni di costo utilizzate dai DBMS sono: Per le tabelle Numero di tuple di una tabella. Dimensione delle tuple. Numero di blocchi di disco utilizzati Per colonne Valore minimo (minval) Valore massimo (maxval). Numero di valori distinti (nval) Numero di valori nulli Lunghezza media Distribuzione dei dati (istogrammi) Per gli indici Numero di foglie Profondità Le informazioni relative alle statistiche sono memorizzate sul Data Dictionary nella viste???_tables,???_tab_col_statistics e???_indexes 77 Le viste del Data Dictionary select TABLE_NAME, TABLESPACE_NAME, NUM_ROWS,BLOCKS,AVG_ROW_LEN from USER_TABLES; TABLE_NAME TABLESPACE_NAME NUM_ROWS BLOCKS AVG_ROW_LEN CUSTOMER DATA LINEITEM DATA NATION DATA ORDERS DATA PART DATA PARTSUPP DATA PLAN_TABLE DATA REGION DATA SUPPLIER DATA TIME DATA
40 Le viste del Data Dictionary Select COLUMN_NAME,NUM_DISTINCT,LOW_VALUE,HIGH_VALUE,NUM_NULLS,AVG_COL_LEN from USER_TAB_COL_STATISTICS where TABLE_NAME= LINEITEM'; COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE NUM_NULLS AVG_COL_LEN L_ORDERKEY C102 C L_PARTKEY C102 C L_SUPPKEY C102 C L_LINENUMBER 7 C102 C L_QUANTITY 50 C102 C L_EXTENDEDPRICE C20A02 C30B L_DISCOUNT C00B Le statistiche Sulla base di queste informazioni, è possibile stimare la selettività di predicati del tipo attributo oprel valore (dove gli operatori oprel possono essere =, >, <,, ): 1 Sel( = x) = nval x minval Sel( < x) = Sel( x) = maxval minval maxval x Sel( > x) = Sel( x) = maxval minval 80 40
41 Le statistiche Le precedenti formule sono ottenute assumendo che i valori dell attributo siano uniformemente distribuiti nell intervallo [minval, maxval]. Quando, come spesso accade, la distribuzione non è uniforme le formule possono determinare delle forti approssimazioni. Uno dei principali passi in avanti nella stima del costo di esecuzione di un interrogazione è l introduzione degli istogrammi che forniscono una rappresentazione semplificata dell effettiva distribuzione dei valori per gli attributi delle relazioni di una specifica istanza di database. 81 Le statistiche L istruzione SQL per calcolare le statistiche è ANALYZE ANALYZE TABLE Prog COMPUTE STATISTICS; Analizza l intera tabella ANALYZE TABLE Prog COMPUTE STATISTICS FOR COLUMN P_NOME ; Restringe l analisi a un singolo attributo ANALYZE INDEX I1 COMPUTE STATISTICS; Analizza un indice ORACLE mette a disposizione un package specifico DBMS_STATS che permette di effettuare una gestione avanzata delle statistiche. Ad esempio: DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME=> USERSI ) 82 41
42 Gli istogrammi Un istogramma fornisce una rappresentazione semplificata della distribuzione dei valori per gli attributi delle relazioni di una specifica istanza di database. La rappresentazione è ottenuta suddividendo lo spazio dei valori in più raggruppamenti o intervalli (bucket) e stimando, per ognuno di essi la frequenza media con cui i valori al loro interno si presentano nel database. Equi-width: suddividono lo spazio dei valori in intervalli di uguale dimensione. Equi-heigh: la suddivisione è tale che la somma delle frequenze dei valori degli attributi associati a ciascun raggruppamento sia uguale (indipendentemente dal numero di valori che saranno contenuti nell intervallo). 83 Gli istogrammi Gli istogrammi equi-height forniscono informazioni più accurate, ma risultano più difficili da calcolare e mantenere aggiornati. L aumento di complessità deriva dal dover calcolare per ogni bucket il range di valori necessario a mantenere costante l altezza dei bucket La scelta della tecnica di costruzione da utilizzare rappresenta il trade-off tra accuratezza della stima da un lato e velocità di aggiornamento e spazio per la memorizzazione delle informazioni dall altro. Le statistiche relative alle sole cardinalità dei singoli attributi possono essere viste come un istogramma degenere composto da un solo raggruppamento. Ovviamente, alla minor quantità di informazione contenuta in un istogramma degenere corrisponderanno errori più grossolani in fase di stima dei costi
43 Gli istogrammi: un esempio Distribuzione dei valori dell attributo età contenuto nella relazione IMPIEGATI di una piccola azienda informatica con 100 dipendenti. Numero persone età 85 Gli istogrammi: un esempio Numero persone età Numero persone età Istogramma equi-width Istogramma equi-heigh Volendo conoscere la porzione di persone con un età inferiore ai 27 anni si otterrà una stima pari a: Statistiche standard: Sel(età 27) = 0, Istogramma equi-width: 0,46 sel(età 27) 0,86 Istogramma equi-heigh: 0,54 sel(età 27) 0,
44 Gli istogrammi in ORACLE Oracle utilizza istogrammi equi-heigh che vengono costruiti con l istruzione ANALYZE TABLE nometabella COMPUTE STATISTICS ALL COLUMN FOR COLUMNS nomecolonna SIZE valore Il parametro SIZE specifica il numero massimo di bucket da utilizzare. Si sconsiglia l utilizzo degli istogrammi quando: gli attributi hanno distribuzione uniforme sugli attributi vengono espresse condizioni di uguaglianza Le informazioni relative agli istogrammi sono memorizzate nel data dictionary nelle viste???_tab_columns e???_tab_histograms. 87 Negli esercizi Qualora le informazioni sulle istanze non fossero fornite: La lunghezza media delle tuple va estrapolata dalle statistiche (DBA STUDIO) La lunghezza media dei singoli campi va estrapolata dalle statistiche (Data Dictionary) Il numero di valori distinti di chiave va estrapolato dalle statistiche Il valore minimo e massimo delle chiavi va estrapolato dalle statistiche o mediante query sql (select count(distinct???) ) Il numero delle foglie degli indici va calcolato in base alle formule date Le stime del numero delle pagine e del numero delle tuple si arrotonda per eccesso. Si tratta di una scelta semplificativa, che introduce un approssimazione che può essere anche rilevante: essendo dati stimati non dovrebbero essere arrotondati 88 44
45 Gli Hints Sebbene l evoluzione degli ottimizzatori li renda sempre più affidabili è spesso necessario apportare delle modifiche al piano di esecuzione proposto dal sistema. Tramite gli hints (consigli) è possibile specificare: L obiettivo dell ottimizzazione Il piano di esecuzione L ordine dei join La tecnica di join La sintassi completa relativa all utilizzo degli hint e necessaria per lo svolgimento degli esercizi la trovate sul manuale Oracle: Performance Tuning Guide Cap. 19 Using optimizer hints 89 Gli Hints In ORACLE gli hints vengono specificati con la sintassi /*+ hint */ dove hint appartiene a uno dei seguenti gruppi: Scelta dell approccio all ottimizzazione ALL_ROWS: il piano di accesso viene stabilito in modo da massimizzare il throughput del sistema. FIRST_ROWS: il piano di accesso viene stabilito in modo da minimizzare il tempo di risposta. CHOOSE: il tipo di ottimizzatore da utilizzare (cost-based o rule-based) viene scelto dall ottimizzatore in base alla presenza delle statistiche. RULE: impone l utilizzo dell ottimizzatore rule-based. select /*+ FIRST_ROWS */ name from lineitem; 90 45
46 Gli Hints Modalità di accesso FULL: accede alla tabella con modalità full scan ROWID: accede alla tabella tramite i RID INDEX: accede alla tabella tramite index scan INDEX_ASC/DESC: accede alla tabella tramite index scan, i valori dell indice sono letti in ordine crescente/decrescente INDEX_COMBINE: impone l utilizzo di indici bitmap per l accesso alla tabella NO_INDEX: impone al sistema di non utilizzare uno specifico insieme di indici per l accesso alla tabella. select /*+ FULL(lineitem)*/ o_clerk, l_quantity from lineitem, orders where l_orderskey=o_orderskey and o_orderdate=15448; 91 Gli Hints Modalità di join USE_NL: impone l utilizzo dell algoritmo di nested loop per le operazioni di join che coinvolgono la tabella che avrà il ruolo di inner table. USE_MERGE: impone l utilizzo dell algoritmo di sort-merge per le operazioni di join che coinvolgono la tabella. USE_HASH: impone l utilizzo dell algoritmo di Hash-join per le operazioni di join che coinvolgono la tabella. LEADING: la tabella specificata dovrà essere la prima nell ordine di join ORDERED: impone che l ordine di esecuzione del join sia lo stesso in cui compaiono le tabelle nella clausola from. select /*+ ORDERED USE_NL(lineitem,orders)*/ o_clerk, l_quantity from lineitem, orders where l_orderkey=o_orderkey and o_orderdate=15448; 92 46
47 Stima dei costi di esecuzione Riprodurre su carta il calcolo del costo di esecuzione utilizzato da un DBMS commerciale è pressoché impossibile: Non sono note le funzioni di costo utilizzate Vengono spesso utilizzate semplificazioni euristiche E complesso modellare l utilizzo di statistiche sofisticate quali gli istogrammi E comunque utile acquisire familiarità con il calcolo dei costi di esecuzione delle interrogazioni: Permette di effettuare stime affidabili nei casi più semplici Permette di capire le scelte dell ottimizzatore e pertanto Consente di valutare la bontà delle scelte dell ottimizzatore Consente di valutare come ottimizzare la struttura del database 93 Stima dei costi di esecuzione Il calcolo dei costi di esecuzione prevede le seguenti fasi: Individuazione dei potenziali alberi di esecuzione Valutazione del costo dei diversi algoritmi utilizzabili nei vari nodi Calcolo del costo complessivo 94 47
DBMS (Data Base Management System)
Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire
Operazioni sui database
Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle
Altri metodi di indicizzazione
Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del
Database. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
Introduzione all Architettura del DBMS
Introduzione all Architettura del DBMS Data Base Management System (DBMS) Un DBMS è uno strumento per la creazione e la gestione efficiente di grandi quantità di dati che consente di conservarli in modo
Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing
Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su
CALCOLO DEL COSTO DI MODIFICA DEI DATI
CALCOLO DEL COSTO DI MODIFICA DEI DATI costo di accesso 1 ipotesi Ipotesi di base sui metodi di accesso: scan sequenziale, oppure accesso su singlo indice, oppure intersezione di tids Ipotesi di base sugli
Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees
Informatica 3 LEZIONE 23: Indicizzazione Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees Informatica 3 Lezione 23 - Modulo 1 Indicizzazione lineare, ISAM e
Organizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere
Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.
Introduzione all Information Retrieval
Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information
Capitolo 13. Interrogare una base di dati
Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per
Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino
Integration Services Project SQL Server 2005 Integration Services Permette di gestire tutti i processi di ETL Basato sui progetti di Business Intelligence di tipo Integration services Project SQL Server
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.
Access. P a r t e p r i m a
Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di
Basi di Dati Relazionali
Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 PROGETTAZIONE DI UNA BASE DI DATI Raccolta e Analisi dei requisiti Progettazione concettuale Schema concettuale Progettazione logica
SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
Strutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.
(Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System
CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)
Ambiente Access La Guida di Access Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Guida in linea Guida rapida Assistente di Office indicazioni
ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7
ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
Lezione V. Aula Multimediale - sabato 29/03/2008
Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)
Sistemi Operativi. 5 Gestione della memoria
Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria
Progettazione Fisica FILE
Progettazione Fisica Organizzazione dei files Organizzazione indici FILE Insieme di record lunghezza fissa (R) lunghezza variabile Record Header BH RH record1 RH record2 RH record2 RH record3 Block Header
SQL/OLAP. Estensioni OLAP in SQL
SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,
Progettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
Il database management system Access
Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio
Basi di Dati Complementi Esercizi. Esercizi su strutture fisiche di accesso. Soluzione Esercizio 1. Esercizio 1. Soluzione Esercizio 2.
Basi di Dati Complementi Esercizi Esercizi su strutture fisiche di accesso Esercizio Soluzione Esercizio Siano date le seguenti informaizni: B=4096 bytes la dimensione di un blocco = bytes la dimensione
L architettura di un DBMS
L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze
Introduzione ai database relazionali
Introduzione ai database relazionali Tabelle Un database (DB) è costituito da un insieme di file che memorizzano dati opportunamente organizzati Nei database relazionale tale organizzazione è costituita
Architettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
B+Trees. Introduzione
B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:
Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare
Progettazione di Basi di Dati
Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello
Dispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
Archivi e Basi di Dati
Archivi e Basi di Dati A B C File Programma 1 Programma 2 A B C File modificati Programma 1 DBMS DB Programma 2 Informatica Generale (CdL in E&C), A.A. 2000-2001 55 Problemi nella gestione di archivi separati
Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione
IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza
Facoltà di Farmacia - Corso di Informatica
Basi di dati Riferimenti: Curtin cap. 8 Versione: 13/03/2007 1 Basi di dati (Database, DB) Una delle applicazioni informatiche più utilizzate, ma meno conosciute dai non informatici Avete già interagito
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento
(anno accademico 2008-09)
Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato
HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?
NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui
I database relazionali (Access)
I database relazionali (Access) Filippo TROTTA 04/02/2013 1 Prof.Filippo TROTTA Definizioni Database Sistema di gestione di database (DBMS, Database Management System) Sistema di gestione di database relazionale
Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory
FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File
Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi
Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi
I file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL
Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,
ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2
ECDL - Database European Computer Driving Licence - Modulo 5 - Database LEZIONE 2 Ripasso Introduzione - Ripasso Cosa si intende per dbms? e cosa per database? Quali sono gli elementi che lo compongono?
Lezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DATABASE RELAZIONALI
1 di 54 UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II DIPARTIMENTO DI DISCIPLINE STORICHE ETTORE LEPORE DATABASE RELAZIONALI Dott. Simone Sammartino Istituto per l Ambiente l Marino Costiero I.A.M.C. C.N.R.
Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati
Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Lezione 10 - Modulo 1 Perchè
CONCETTO DI ANNIDAMENTO
LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di
Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1
GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria
Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco
GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria
ISTITUTO TECNICO ECONOMICO MOSSOTTI
CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche
Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati
Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità
Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a
Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono
Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati
Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza
Al giorno d oggi, i sistemi per la gestione di database
Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,
DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione
SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record
5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1
SQL Server 2005. Integration Services. SQL Server 2005: ETL - 1. Integration Services Project
atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and data mining group, SQL Server 2005 Integration Services SQL Server 2005:
Soluzione dell esercizio del 12 Febbraio 2004
Soluzione dell esercizio del 12/2/2004 1 Soluzione dell esercizio del 12 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. 2. Modello concettuale
Excel. A cura di Luigi Labonia. e-mail: [email protected]
Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
File system II. Sistemi Operativi Lez. 20
File system II Sistemi Operativi Lez. 20 Gestione spazi su disco Esiste un trade-off,tra spreco dello spazio e velocità di trasferimento in base alla dimensione del blocco fisico Gestione spazio su disco
Gestione della memoria centrale
Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti
Cosa è un foglio elettronico
Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti
Data warehouse in Oracle
Data warehouse in Oracle Viste materializzate ed estensioni al linguaggio i SQL per l analisi li i dei dati presenti nei data warehouse Estensioni al linguaggio SQL per l analisi dei dati presenti nei
Dimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
Mon Ami 3000 Varianti articolo Gestione di varianti articoli
Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione
INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.
INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed
Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda
Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato
OSSIF WEB. Manuale query builder
OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI
Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni
Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono
Data Warehousing (DW)
Data Warehousing (DW) Il Data Warehousing è un processo per estrarre e integrare dati storici da sistemi transazionali (OLTP) diversi e disomogenei, e da usare come supporto al sistema di decisione aziendale
Raggruppamenti Conti Movimenti
ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli
Esercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
Basi di Dati Multimediali. Fabio Strocco
Basi di Dati Multimediali Fabio Strocco September 19, 2011 1 Contents 2 Introduzione Le basi di dati (o database) hanno applicazioni in molti campi, in cui è necessario memorizzare, analizzare e gestire
PROGRAMMA DI CLASSE 5AI
Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA
MODELLO RELAZIONALE. Introduzione
MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)
Il linguaggio SQL: viste e tabelle derivate
Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento
Base di dati e sistemi informativi
Base di dati e sistemi informativi Una base di dati è un insieme organizzato di dati opportunamente strutturato per lo svolgimento di determinate attività La base di dati è un elemento fondamentale per
Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati
Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
Automazione Industriale (scheduling+mms) scheduling+mms. [email protected]
Automazione Industriale (scheduling+mms) scheduling+mms [email protected] Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione
Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale
Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente
Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota
Attributi e domini Assumiamo un universo infinito numerabile U = {A 0, A 1, A 2...} di attributi. Denotiamo gli attributi con A, B, C, B 1, C 1... e gli insiemi di attributi con X, Y, Z, X 1,... per brevità
Organizzazione delle informazioni: Database
Organizzazione delle informazioni: Database Laboratorio Informatico di base A.A. 2013/2014 Dipartimento di Scienze Aziendali e Giuridiche Università della Calabria Dott. Pierluigi Muoio ([email protected])
Il Modello Relazionale
Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981
Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004
DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa
B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:
B-Tree Prof. Rudolf Bayer Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in: Filesystem: btrfs, NTFS, ReiserFS, NSS, XFS, JFS
Esercizi per il corso di Algoritmi e Strutture Dati
1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi
TEORIA sulle BASI DI DATI
TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere
