Valutazione costi di una QUERY. A.1-Nome di tutti i fornitori che forniscono il prodotto P2 forpro fornitori CP=P2 Nome fornitori (CF, Nome, Citta) prodotti(CP,

Slides:



Advertisements
Presentazioni simili
Analisi dati con Excel Parte I.
Advertisements

Calcolo Relazionale.
Tecnologia delle basi di dati: Strutture fisiche di accesso
Introduzione ai DBMS I Sistemi di Gestione di Basi di Dati sono strumenti software evoluti per la gestione di grandi masse di dati residenti su memoria.
Architettura di un DBMS
DOCUMENTAZIONE DI SCHEMI E/R
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Il Problema dellordinamento.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Il Problema dellordinamento.
8. Problemi ricorrenti: ordinamento e ricerca Ing. Simona Colucci
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Fisica e Tuning: Concetti Avanzati versione 2.0 Questo lavoro è concesso.
SQL Dati i seguenti schemi relazionali:
ESEMPI DI ARCHIVI DI DATI
Realizzazione del file system
Realizzazione del file system
1 Microsoft Access 1. 2 Contenuto Dovete progettare e realizzare, usando Access, una base di dati che riguarda gli esami sostenuti dagli studenti iscritti.
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Luglio 2004Memorie Tradizionali1 MEMORIE TRADIZIONALI Luglio 2004.
File.
11/10/2001Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 1 Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno)schema.
LA PROGETTAZIONE LOGICA
Tabelle hash.
SQL: Lezione 7 Nataliya Rassadko
Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
Progettazione di una base di dati
Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Daniel Stoilov Tesi di Laurea
MySQL Query Performance Optimization
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 3: ALGEBRA E CALCOLO RELAZIONALE 10/10/2002.
Basi di dati Claudia Raibulet
Manipolazione dei dati
Tutorial su Access 2003 Obiettivi :
MODELLO LOGICO DEI DATI
Basi di Dati e Sistemi Informativi
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
B trees.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Architettura Centralizzata di un DBMS Relazionale
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Microsoft Access Query (II), filtri.
Progettazione di una base di dati Progettazione logica (modello relazionale)
ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Interrogazioni (parte 2)
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora.
Progettazione di una base di dati relazionale Terza forma normale.
Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.
Sistemi di Elaborazione delle Informazioni
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Eprogram informatica V anno.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
NORMALIZZAZIONE ESERCIZI. INTRODUZIONE La modellazione E-R ci ha consentito di descrivere schemi relazionali Lo strumento base per la modellizzazione.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
Esercizio Una tabella Pubblicazioni ha chiave primaria CodPubbl e come chiave candidata l'ISBN. La tabella contiene di tuple ed è memorizzata.
DDBMS Distributed database system. DDB Una base di dati distribuita è una collezione di dati che appartengono logicamente allo stesso sistema informativo.
Transcript della presentazione:

Valutazione costi di una QUERY

A.1-Nome di tutti i fornitori che forniscono il prodotto P2 forpro fornitori CP=P2 Nome fornitori (CF, Nome, Citta) prodotti(CP, NomP, Color) forpro (CF, CP, Qta) Solo forniture prodotto P2 (CF,CP,Qta,Nome,Citta)

Piano della Query - Espresso da un grafo - Puo essere ottimizzato logicamente - Esprime una pipeline - E convertito in un piano di esecuzione che puo essere ottimizzato rispetto al costo

Informazioni di Catalogo Sono le principali informazioni statistiche su ogni file memorizzate nel catalogo DBMS. Riguardano parametri che possono anche variare nel tempo (es. record di una tabella) Comando ANALYZE di Oracle

Informazioni di Catalogo T(R) Numero t-uple di R B(R) Numero blocchi di R S(R) Dimensione t-uple di R S(A,R) Dimensione attributo A di R V(A,R) Numero valori distinti di A in R Max(A,R) ; Min (A;R) K(I) Numero entrate dellindice I L(I) Numero blocchi foglie di I H(I) Altezza indice I

La Selezione

Funzioni di costo per la selezione su un predicato di uguaglianza (SEL A=a in R) Ricerca lineare C=B/2 sulla chiave altrimenti C=B Ricerca binaria C=log 2 B sulla chiave Indice su chiave primaria C= livelli indice L(I) +1 Indice su chiave non primaria +recupero di record multipli C= L(I)+ B/2

Funzioni di costo per la selezione in termini di blocchi acceduti in R con B(R)=B Indice secondario (B+ tree) Selezione per uguaglianza C=L(I)+1 se A è chiave di R Se A non è chiave, si aggiunge il costo di ricerca sulle foglie C= L(I)+ (V(A,R)/fattblocco indice -1)

Esempio IMPIEGATO (matr, nome, c_Dipartimento, ……) I Record, 2000 blocchi FB(I)= 5 Sel c_Dip =5 (IMPIEGATO) C=2000 non chiave Ipotesi: un Btree+ su C_Dip con 125 valori di chiave L(I C-Dip )=2 4 blocchi di liv. 1, card di selezione=10000/125=80 C= L( I C-Dip )+ selettività di C_Dip= 2+80 =82

Esempio IMPIEGATO (matr, nome, c_Dipartimento, ……) Ipotesi: I Record, 2000 blocchi FB(I)= 5 Sel c_Dip =5 and sex=F Stimo i singoli predicati Ipotesi: su sex un indice secondario Selettività=5000 C (sex=F)= L( I sex )+selettività = 1+(5000)= 5001

Esempio IMPIEGATO (matr, nome, c_Dipartimento, ……) Ipotesi: I Record, 2000 blocchi FB(I)= 5 Sel c_Dip =5 and stip>100 and sex=F Recupero c_Dip=5 Costo ( c_Dip=5 ) =82 Costo ( Sex=F ) =5001 Verifico sex= >F

METODI PER LIMPLEMENTAZIONE DEL JOIN

RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati Reparto=Codice Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni RossiAMoriAAA NeriBBBruni BianchiBBBruni Per ogni impiegato il suo capo come opera il JOIN ?

A=B S R inner outer Ipotesi: R 6000 Record, 2000 blocchi S 50 Record, 10 blocchi NB: Il join avviene portando nel buffer di dimensione M i blocchi delle relazioni. Uno dei blocchi deve essere lasciato libero per scrivere il risultato ed uno per effettuare le elaborazioni.

Metodi per limplementazione Nested loop Join (forza bruta) Single-loop Join o Index Join Sort-Merge Join Hash Join

Nested loop Join (forza bruta) Per ogni record t in R (ciclo esterno) si confronta ogni record s in S (ciclo interno) e si recuperano i records (le t-uple di S) che soddisfano la condizione di Join s(B)=t(A) A=B S R

Nested loop Join (forza bruta) Per ogni record t in R (ciclo esterno) si confronta ogni record s in S (ciclo interno) e si recuperano i records (le t-uple di S) che soddisfano la condizione di Join s(B)=t(A) A=B S R

Nested loop Join (esempio) Query: Nome degli studenti che hanno sostenuto BD STUDENTE (matr, nome, residenza, ……) EsameBD (matr, semestre) Porto in memoria ESAMEBD e per ogni record cerco la matricola corrispondente in STUDENTE e scrivo il nome nel buffer dei risultati

Nested loop Join - Costo Costo = B(R) + B(R)* B(S) Blocchi di R Blocchi di S N.B. Formula che vale i buffer sono abbastanza da contenere sia R che S che i risultati

Nested loop Join - Costo Costo = B(R) + B(R)* B(S) Conviene portare in memoria centrale il maggior numero di blocchi del ciclo esterno Per poi leggere i blocchi del ciclo interno Blocchi di R Blocchi di S

Influenza del buffer Costo = B(R) + ( B(R)/(NB-2) *B(S) ) Blocchi di R Buffer Memoria Centrale NB Ogni blocco di R viene letto una volta Ciascun blocco di S viene letto una volta per ognuna delle letture degli (NB-2) blocchi di R Blocchi di S

Nested loop Join - Costo Costo = B(R) + B(R)* B(S) / (NB-2) Blocchi di R Blocchi di S N.B. Formula che vale se ho NB buffers

Nested loop Join - Costo Costo = B(R) + B(R)* B(S) / (NB-2) Blocchi di R Blocchi di S N.B. IN ALCUNI TESTI PUO TROVARSI IL VALORE 1 PERCHE SI DA PER SCONTATO CHE UN BUFFER SIA LASCIATO A DISPOSIZIONE PER I RISULTATI

Nested loop Join – Costo (esempio) IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) NB=12 sono disponibili 10 I 6000 Record, 2000 blocchi D 50 Record, 10 blocchi Costo = B(R) + B(R)* B(S) / (NB-2) Costo = B(I) + B(I)* B(D) / (NB-2)= *10/10=4000 Costo = B(D) + B(D)* B(I) / (NB-2)=10+10*2000/10=2010

Single loop Join Esiste un indice su uno dei due attributi di Join (es. B in S). Per ogni record t in R (ciclo esterno) si utilizza lindice per recuperare da S tutti i records s che soddisfano la condizione di Join s(B)=t(A) A=B S R

Single loop Join - Costo Costo = B(R) + V(B,S) * C(I B,S) Blocchi di R Numero valori Distinti di B in S Costo percorrenza indice

Costo percorrenza indice Influenzato dal fattore di selezione del Join rispetto al predicato P. F(P) = numero tuple che soddisfano P numero totale di tuple Indica la percentuale di t-uple che partecipano al join

Costo percorrenza indice Esempio: A) se ho un B-Tree su chiave primaria : Percorro lindice e poi accedo al dato B) se ho un B-Tree su chiave secondaria : Percorro lindice e poi percorro le foglie. Il costo di percorrenza delle foglie è proporzionale al numero di chiavi che soddisfano la condizione di join, cioè F(P).

Single loop Join - Costo Costo = B(R) + V(B,S) * C(I B,S) Blocchi di R Numero valori Distinti di B in S Costo percorrenza indice Nel dettaglio rispetto allindice ….

Single loop Join con Costo Indice Costo = B(R) + T(R) * (L(I B ) +1) T-UPLE di R Livello indice INDICE PRIMARIO (chiave) SU B

Single loop Join con Costo indice Costo = B(R) + T(R) * (F(P) * L (I B,S) ) T-UPLE di R Numero valori Distinti di S che partecipano al JOIN LIVELLO indice INDICE SECONDARIO SU B

Se non conosco F(P) ……. Costo = B(R) + T(R) * (V(B,S)/F(I B )) T-UPLE di R Numero valori Distinti di B in S Fattore di blocco indice INDICE SPARSO (cluster) SU B

Single loop Join – Costo (esempio) IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr Molti impiegati non dirigono un dipartimento e non partecipano al join. Se Dipartimento ha 50 records e Impiegato ne ha 6000 F(direttore=matr)= 50/6000 circa 8%.

Single loop Join – Costo (esempio) IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr A volte ogni relazione ha un indice. Come scegliere quale indice utilizzare ???? Esempio: Cerco i nomi dei direttori

Single loop Join – Costo (esempio) IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr Ipotesi: I 6000 Record, 2000 blocchi D 50 Record, 10 blocchi esistono 2 indici secondari : -- su matr a 4 livelli -- su direttore a 2 livelli

IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr 1) Accedo a impiegato e uso I(direttore) OPPURE 2)Accedo a Direttore e uso I(matr)

IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr Costo1) = B(I) + NRec(I) * (liv(Idirettore)+1) =2000+(6000*3)= ) Accedo a impiegato e uso I(direttore) a 2 livelli I 6000 Record, 2000 blocchi D 50 Record, 10 blocchi Indice su campo chiave.

IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr Costo2)= B(D) + NRec(D)*(liv(Imatr)+1) =50+(50*5)= 260 2)Accedo a Direttore e uso I(matr) a 4 livelli su chiave primaria I 6000 Record, 2000 blocchi D 50 Record, 10 blocchi Conviene portare nel buffer DIPARTIMENTO

Sort Merge Join R ed S sono ordinati secondo A e B (se non lo sono si ordinano) Files scanditi ordinatamente in modo concorrente Coppie di blocchi copiate in ordine sul buffer Record di R scanditi una sola volta rispetto a S. A=B S R

Sort Merge Join - Costo C1 = B(R) + B(S) Blocchi di RBlocchi di S C2 = C1+ (B(R) * log2 (B(R)) + (B(S) *log2 (B(S)) Ordinamento R Ordinamento S

Sort Join: Precisazione I costi sono calcolati ipotizzando di portare nel buffer il prodotto cartesiano delle relazioni R e S Se ho M buffer deve essere: B(R) +B (S) <=M 2. Altrimenti il costo deve essere espresso in log di base M-1 e non in base 2

Sort Join - Costo C1 =3( B(R) + B(S) ) Blocchi di RBlocchi di S Questo costo vale se il valore del log in base 2 è pari a 1. Cioè se lampiezza del prodotto cartesiano è pari al Numero dei blocchi di R + numero blocchi di S

Hash Join 1) Fase di partizionamento Una stessa funzione di hash su A e B mappa R in R1,R2,…RM buckets (prima iterazione) S in S1,S2,..SM buckets (seconda iterazione) Per ogni bucket, un solo buffer che viene scaricato quando è pieno A=B S R

IMPIEGATO (matr, nome, dipartimento, ……) DIPARTIMENTO (nomeDip, direttore) FK: direttore matr Esempio potrei fare su entrambe le relazioni Un hashing modulo 7 sul campo matricola Avrei M=8 buckets corrispondenti per relazione 1 R e S 2 R e S ………. 8 R e S

Hash Join 1) Fase di joining o probing Servono M iterazioni. Alliterazione i si esegue il join di Ri con Si. Join nested loop la piu piccola partizione portata in memoria e confrontata con le altre. A=B S R

Hash Join - Costo C1 = 3 *( B(R) + B(S) ) Blocchi di RBlocchi di S

Hash Join Se la piu piccola R sta tutta in memoria: 1)Si porta R in memoria organizzata da hashing 2)Ogni blocco di S viene portato in memoria, sottoposto ad hashing e confrontato con R. C = B(R) + B(S)

Hash Join Ibrido Obiettivo: eseguire il join durante il partizionamento. 1)Si partiziona R in M partizioni 2)Si porta in memoria R1 (le altre su disco 3)Si partiziona S portando tutti i record S1 in memoria 4)Si esegue il join R1 S1 5)Si effettua il join sulle M-1 partizioni rimaste Se ho NB buffer si puo fare solo se: B(R) <=NB 2.

Hash Join Ibrido- Costo C1 = (3-2*NB/ min(B(R),B(S)) * (B(R)+ B(S) )

N.B. Qualunque sia la tipologia di JOIN va considerato un costo aggiuntivo per la scrittura del risultato A=B S R La DIMENSIONE del risultato dipende da V(A,R) Numero valori distinti di A in R V(B,S) Numero valori distinti di B in S X= T(X) = T(R)*T(S) / max (V(A,R) V(B,S)) Utile nel caso di join multipli