Caso 1 6WUXWWXUHÃILVLFKHÃLQÃDOFXQLÃ'%06 6WUXWWXUHÃILVLFKHÃQHLÃ'%06ÃUHOD]LRQDOL 3URJHWWD]LRQHÃILVLFD HXULVWLFKHÃVXJJHULWHÃGDÃ,QIRUPL[

Documenti analoghi
Casi di studio per il tuning delle strutture fisiche (Shasha)

Basi di dati II, primo modulo Prova parziale 22 marzo 2010 Compito A

FILE E INDICI Architettura DBMS

Cognome Nome Matricola Ordin.

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Basi di dati II Prova parziale 23 maggio 2016 Compito A

Esercizio 10.1 Soluzione

Basi di dati II 21 febbraio 2017 Tempo a disposizione: un ora e quarantacinque minuti.

Organizzazione Fisica dei Dati (Parte II)

Organizzazione fisica dei dati: Gli Indici

una chiave primaria o secondaria => B+tree primario o secondario (NL,g e h diversi) clustered o unclustered => ho un piano di accesso diverso!!

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees

Pag Politecnico di Torino 1

D B M G D B M G 2. Gestione degli indici. Introduzione Strutture fisiche di accesso Definizione di indici in SQL Progettazione fisica

Memorizzazione di una relazione

Strutture fisiche e strutture di accesso ai dati

Parte 6 Esercitazione sull accesso ai file

Esercizi proposti a lezione cap. 1 rev. ott da Atzeni e altri - Basi di dati vol. 2 ed/ ORGANIZZAZIONE FISICA

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Basi di dati II Esame 26 febbraio 2013 Rispondere su questo fascicolo. Tempo a disposizione: due ore e trenta minuti.

Dr. C. d'amat LA PROGETTAZIONE FISICA

INTRODUZIONE AL 2 TEST IN ITINERE. a.a

Strutture Fisiche di Memorizzazione

Strutture fisiche di accesso

Gestione della Concorrenza

INTRODUZIONE AL LIVELLO FISICO: FILE, PAGINE, RECORD E INDICI

Informatica 3. Informatica 3. LEZIONE 23: Indicizzazione. Lezione 23 - Modulo 1. Indicizzazione. Introduzione. Indicizzazione:

Organizzazione fisica dei dati

Organizzazione fisica dei dati. L. Vigliano

Organizzazione fisica e gestione delle interrogazioni

La gestione delle interrogazioni

Strutture di accesso ai dati: B + -tree

Basi di dati II Esame 22 settembre 2017 Compito A Tempo a disposizione: due ore.

Basi di dati II, primo modulo 6 settembre 2011

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori.

File e Indici. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE

Il file È un insieme di informazioni: programmi. Il File System. Il file system

INTRODUZIONE AI DBMS. Inoltre i fogli elettronici. Mentre sono poco adatti per operazioni di. Prof. Alberto Postiglione

INTRODUZIONE AI DBMS

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file system. Il File System. Il file È un insieme di informazioni: programmi dati testi

CALCOLO DEL COSTO DI JOIN. costo di join 1

Sistemi di Elaborazione delle Informazioni

Strutture fisiche di accesso

Bibliografia. INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Definizione di DB e di DBMS

Basi di dati II Prova parziale 28 marzo 2014 Compito A Tempo a disposizione: un ora.

Structured Query Language

Esecuzione concorrente di transazioni

Indici. Sistemi Informativi L-B. Home Page del corso: Versione elettronica: Indici.pdf

Sistemi Informativi L-B. Home Page del corso: Versione elettronica: Indici.pdf. Sistemi Informativi L-B

Esercitazione E3 File System

Hashing e indici multidimensionali

Le transazioni. Update CC set saldo = saldo + 25 where ccnum = Update CC set saldo = saldo 25 where ccnum = 26488

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

Filippo Bergamasco ( DAIS - Università Ca Foscari di Venezia Anno accademico:

SQL Esercizi DML Blocco 1

Basi di dati II 21 settembre 2016 Tempo a disposizione: due ore e trenta minuti.

Basi di dati II Esame 29 settembre 2014

Basi di dati II Esame 28 giugno 2016 Compito A Tempo a disposizione: un ora per la prova breve e due ore e trenta minuti per la prova completa.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Basi di dati II compito A 19 settembre 2018 Tempo a disposizione: un ora e quarantacinque minuti. Cognome Nome Matricola

Uso degli indici nell ottimizzazione delle query SQL

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno GESTIONE DEI DATI

Basi di dati II 25 febbraio 2014 Tempo a disposizione: due ore.

Basi di dati II Esame 5 luglio 2017 Tempo a disposizione: un ora e quindici minuti per la prova breve e due ore e trenta minuti per la prova completa.

Sistemi Operativi (modulo di Informatica II) L interfaccia del file system

Basi di dati II 30 gennaio 2015

Basi di dati II Esame 20 settembre 2013 Compito A

La memoria principale

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

Basi di dati vol.2 Capitolo 1 Organizzazione fisica e gestione delle interrogazioni 12/05/2007

ITI M. FARADAY. Programmazione a. s

Il file system. Il File System. Attributi del file. File

Sistemi Operativi. La gestione delle risorse

Lezione 1. Introduzione ai sistemi di basi di dati

BASE DI DATI. (accezione specifica) collezione di dati gestita da un DBMS. Università degli Studi di Cassino

SQL per le applicazioni. Basi di dati. Elena Baralis. Pag Politecnico di Torino 1 D B M G2 D B M G4 D B M G5 D B M G6. SQL per le applicazioni

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Basi di dati vol.2 Capitolo 1 Organizzazione fisica e gestione delle interrogazioni 09/05/2008

Algoritmi di Ricerca. Esempi di programmi Java

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database.

Corso di Fondamenti di Informatica prova del 08/01/2007

Sistemi Operativi. Bruschi Martignoni Monga. File system Astrazioni utente Metadati Tecniche implementative. Sistemi Operativi

Sistemi Operativi FILE SYSTEM : INTERFACCIA. D. Talia - UNICAL. Sistemi Operativi 8.1

Sistemi informativi e basi di dati. Il modello relazionale. SQL come DCL Utilizzo di un DBMS Reale. Forme normali. Basi di dati direzionali

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002

Basi di dati II Esame 16 febbraio 2016 Compito A Tempo a disposizione: due ore e quindici minuti.

Componenti di un DBMS

Prova Scritta di Basi di Dati

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

Progettazione logica

File System. Capitolo 13

Transcript:

6WUXWWXUHÃILVLFKHÃQHLÃ'%06ÃUHOD]LRQDOL Struttura primaria: disordinata (heap, "unclustered") ordinata ("clustered"), anche su una pseudochiave hash ("clustered"), anche su una pseudochiave, senza ordinamento clustering di più relazioni Indici (densi/sparsi, semplici/composti): ISAM (statico), di solito su struttura ordinata B-tree (dinamico) 6WUXWWXUHÃILVLFKHÃLQÃDOFXQLÃ'%06 Oracle (1995 ca): file heap (eventualmente con cluster, anche plurirelazionali) indici secondari (anche su cluster) DB2 (1998): file heap indice sulla chiave primaria (automaticamente) indici secondari (e primari: "cluster") Ingres: file heap, hash, ISAM (ciascuno anche compresso) indici secondari Informix (per DOS, 1994): file heap indici secondari (e primari [cluster] ma non mantenuti) 15/02/2000 Basi di dati: tuning 1 15/02/2000 Basi di dati: tuning 2 3URJHWWD]LRQHÃILVLFD HXULVWLFKHÃVXJJHULWHÃGDÃ,QIRUPL[ 6FHOWDÃGHOODÃVWUXWWXUDÃVHFRQGRÃ6KDVKD n creare indici su relazioni piccole (<200 ennuple) non creare indici su campi con pochi valori (se proprio servono, che siano primari) creare indici su campi con selezioni per i join: creare indici sulla relazione più grande Enorme e senza tempi morti? Relazione piccola? Heap con indice Heap senza indice Intervalli, estremi, ordinamenti? Hash Chiave seq? Dinamica? Hash Cluster ISAM Cluster B-Tree 15/02/2000 Basi di dati: tuning 3 15/02/2000 Basi di dati: tuning 4 &DVLÃGLÃVWXGLRÃSHUÃLOÃWXQLQJ GHOOHÃVWUXWWXUHÃILVLFKHÃ6KDVKD Employee (SSN, Name, Dept, Manager, Salary) Student(SSN, Name, Course, Grade, Stipend,WrittenEvaluation) dal testo: D. Shasha. Database Tuning: a principled approach. Prentice-Hall, 1992 Caso 1 Sulla relazione Student viene definito un indice, ma l'interrogazione seguente non lo usa: FROM Student WHERE Name = 'Bayer' Le statistiche potrebbero non essere aggiornate, e quindi l'ottimizzatore sceglie di non usare l'indice, ritenendo la relazione piccola 15/02/2000 Basi di dati: tuning 5 15/02/2000 Basi di dati: tuning 6 1

Caso 2 Caso 3 Sull'attributo Salary della relazione Employee viene definito un indice, ma l'interrogazione seguente non lo usa, anche dopo l'aggiornamento delle statistiche: FROM Employee WHERE Salary/12 = 4000 L'indice non viene utilizzato perché c'è l'espressione aritmetica Sull'attributo Salary della relazione Employee viene definito un indice, l'interrogazione seguente lo usa, ma senza beneficio: FROM Employee WHERE Salary = 48000 Probabilmente ci sono molti impiegati con stipendio 48000 e l'indice è secondario. L'interrogazione deve quindi accedere a molte pagine (magari quasi tutte). 15/02/2000 Basi di dati: tuning 7 15/02/2000 Basi di dati: tuning 8 Caso 4 Casi 5 e 6 La relazione Studente ha una struttura ordinata con indice su SSN e si generano liste di overflow quando si modifica il valore di "WrittenEvaluation" WrittenEvaluation ha probabilmente lunghezza variabile. La struttura ordinata è poco flessibile in questo caso. Probabilmente conviene una struttura disordinata con indice secondario su SSN La relazione impiegato ha un fattore di blocco (numero di ennuple per blocco) pari a 30. Ogni impiegato (si vede dallo schema) afferisce ad un dipartimento. Caso 5: Ci sono 50 dipartimenti diversi. Caso 6: Ci sono 2000 dipartimenti diversi. Conviene avere un indice secondario su Dept? 5LVSRVWD Nel caso 5 no, perché ogni pagina contiene mediamente impiegati di tutti o quasi i dipartimenti, e quindi un accesso con indice non è più efficiente di una scansione sequenziale, anzi. Nel caso 6 sì, perché ogni pagina contiene solo record di al più 30 dipartimenti su 2000 15/02/2000 Basi di dati: tuning 9 15/02/2000 Basi di dati: tuning 10 Caso 7 Caso 8 Viene effettuata una copia della relazione Employee, per eseguire su di essa interrogazioni fuori linea (e nessun aggiornamento), in particolare: 1 Contare gli impiegati con un certo stipendio (frequente) 2 Trovare gli impiegati con lo stip max in un dip (frequente) 3 Trovare un impiegato dato il SSN (un po' meno frequente) un indice secondario potrebbe essere più efficiente per (1) perché denso per (2) serve un indice su Dept, Salary (secondario va bene) per (3) un indice primario può essere meglio di un secondario Stipend (in Student) è retribuzione mensile, mentre Salary (in Employee) è annuale. Vogliamo trovare impiegati e studenti con la stessa retribuzione. Che differenza c'è (quale conviene?) fra: 6(/(&7Ã )520Ã(PSOR\HHÃ6WXGHQW :+(5(Ã6DODU\Ã 6WLSHQG 6(/(&7Ã )520Ã(PSOR\HHÃ6WXGHQW :+(5(Ã6DODU\Ã Ã6WLSHQG 15/02/2000 Basi di dati: tuning 11 15/02/2000 Basi di dati: tuning 12 2

Caso 8, risposta Caso 9 Indici e espressioni, vedi caso (2): un indice su Stipend potrebbe non essere usato nella prima interrogazione (su Salary sì) un indice su Salary potrebbe non essere usato nella seconda interrogazione (su Stipend sì) Quindi se c'è un indice solo, abbiamo una risposta Se ci sono entrambi, se uno è primario, conviene farlo usare Se sono entrambi secondari, conviene far usare quello sulla relazione più grande (salvo in caso in cui esso sia poco selettivo) Onorder(Supplier,Part,Quantity,Price) Operazioni 1 Inserimento (molto frequente) 2 Eliminazione, dati Supplier e Part (molto frequente) 3 Trovare la quantità totale degli ordini di una Part (frequente) 4 Trovare l'importo totale degli ordini di un fornitore (rara) Se ci sono tempi morti: indice primario su Part e Supplier (hash non va bene per la 3) altrimenti, secondario 15/02/2000 Basi di dati: tuning 13 15/02/2000 Basi di dati: tuning 14 Caso 10 Caso 11 Onorder(Supplier,Part,Quantity,Price) Operazioni sola lettura 3 Trovare la quantità totale degli ordini di una Part (frequente) 4 Trovare l'importo totale degli ordini di un fornitore (meno frequente) Indice primario su Part e Supplier Indice secondario su Supplier Archivio clienti di una carta di credito. Operazioni: 1 Inserimento nuovo cliente (frequente) 2 Trovare un cliente dato il codice fiscale (frequente) 3 Trovare un cliente dato il "ClientNumber" (meno frequente) 4 Scandire l'archivio per intero (rara) C'è una struttura primaria hash sul codice fiscale e un indice secondario B-tree sul " ClientNumber" (che viene generato sfruttando le primitive sui contatori). Le transazioni però sono molto lente. l'ultima pagina del B-tree è un collo di bottiglia; se il sistema la prevede su può usare struttura hash secondaria (cioè struttura hash con un livello aggiuntivo di puntatori) 15/02/2000 Basi di dati: tuning 15 15/02/2000 Basi di dati: tuning 16 Caso 12 Caso 13 Una relazione ha un indice B-tree sul codice fiscale e le operazioni principali sono ricerche e aggiornamenti su ennuple individuate sulla base del codice fiscale. Se le prestazioni non sono soddisfacenti, come provare a migliorarle? B-tree ordinato (in alcuni casi) hash Una relazione disordinata risulta inefficiente in caso di molti inserimenti concorrenti Se le prestazioni non sono soddisfacenti, come provare a migliorarle? Essendo la relazione disordinata, gli inserimenti sono sempre nell'ultimo blocco, su cui i lock generano ritardi. Quindi: si può usare una struttura hash che "sparpagli" usare lock a livello di record riorganizzare le applicazioni, per ridurre i picchi di inserimenti (può non essere possibile) raggruppare più inserimenti in ciascuna transazione 15/02/2000 Basi di dati: tuning 17 15/02/2000 Basi di dati: tuning 18 3

Caso 14 Ellis Island gestisce l'archivio dei milioni di immigrati negli USA dell'800 e primo 900. Per ogni immigrato ci sono molti campi, e viene offerto un servizio che dato cognome (talvolta anche nome) e anno di arrivo fornisce le altre info. Che struttura fisica? Abbiamo solo lettura, quindi soluzioni statiche ok Indice primario (anche ISAM) su cognome e nome forse un indice secondario su cognome e anno altri indici probabilmente poco selettivi (ma comunque valutabili, perché senza costi di aggiornamento) &DVLÃGLÃVWXGLRÃSHUÃLOÃWXQLQJ GLÃEDVLÃGLÃGDWL dal testo: D. Shasha. Database Tuning: a principled approach. Prentice-Hall, 1992 15/02/2000 Basi di dati: tuning 19 15/02/2000 Basi di dati: tuning 20 Caso 1 Caso 2 Abbiamo una base di dati con dieci relazioni su due dischi: cinque e cinque; su un disco c'è anche il log. Compriamo un nuovo disco; che cosa ci mettiamo? 3RVVLELOHÃULVSRVWD Il log Il tempo di risposta è variabile, in particolare ci sono rallentamenti quando vengono eseguite operazioni DDL 3RVVLELOHÃULVSRVWD Le operazioni DDL richiedono lock in scrittura sul catalogo 15/02/2000 Basi di dati: tuning 21 15/02/2000 Basi di dati: tuning 22 Caso 3 Caso 4 Transazioni così organizzate sono insoddisfacenti: attribuzione di un nuovo numero di pratica richiesta di info interattive effettuare l'inserimento transazione troppo lunga; vanno riordinati i passi, e nella transazione ci devono essere solo i l primo e il terzo Una transazione così organizzata eseguita a fine mese, di sera, è inefficiente: per ogni conto stampare tutte le info... essendo di sola lettura, di sera (tempo morto) potrebbe essere senza lock (Uncommitted Read) 15/02/2000 Basi di dati: tuning 23 15/02/2000 Basi di dati: tuning 24 4

Casi 5 e 6 Caso 7 Nell'ambito di una transazione, si calcola lo stipendio medio per ciascun dipartimento. Contemporaneamente si fanno modifiche su singoli stipendi. Le prestazioni sono insoddisfacenti. si può eseguire in un tempo morto (senza aggiornamenti) senza lock (Read Uncommitted) se sono tollerate (leggere) inconsistenze, si può procedere senza lock (Read Uncommitted) si può fare una copia e lavorare su di essa (dati non attuali) se nessuna delle alternative è praticabile (non ci sono tempi morti e si vogliono dati attuali e consistenti) si può provare con Read Committed (non c'è rischio di "phantom") Un'applicazione prevede: migliaia di inserimenti ogni ora centinaia di migliaia di piccoli aggiornamenti ogni ora Gli inserimenti arrivano in transazioni grandi ogni mezz'ora e durano 5 minuti. In queste fasi le prestazioni sono inaccettabili (tempo di risposta 30 sec, rispetto a mezzo secondo) e si nota che uno dei dischi è sovraccarico spezzare le transazioni con gli inserimenti riorganizzare i file, in modo che gli inserimenti si ripartiscano su tutti i dischi 15/02/2000 Basi di dati: tuning 25 15/02/2000 Basi di dati: tuning 26 Caso 8 Caso 9 Un'applicazione che prevede un'istruzione SQL all'interno di un ciclo è lenta (e usa molto tempo di CPU) usare bene il cursore (facciamo fare i cicli all'sql) Un disco è inefficiente anche se non pieno. Ci sono relativamente pochi inserimenti molte letture lunghe (scansioni) separare il log su un disco a sé riorganizzare i file in modo contiguo 15/02/2000 Basi di dati: tuning 27 15/02/2000 Basi di dati: tuning 28 Caso 10 Una società di servizi emette tutte le bollette a fine mese, con un programma che ha bisogno di tutta la notte, impedendo così l'esecuzione di altri prorammi batch che sarebbero necessari è proprio necessario che le bollette siano emesse tutte insieme? se è proprio necessario, magari facciamolo durante il week-end (tempo morto più lungo) 15/02/2000 Basi di dati: tuning 29 5