versione 2.0
Questo lavoro concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Concetti Avanzati
Introduzione
Ottimizzazione
delle Interrogazioni
Un Esempio
Messa
a Punto (Tuning)
Carico Applicativo Strutture di Accesso Modifiche allo Schema Logico Parametri Architetturali
G. Mecca - mecca@unibas.it - Basi di Dati 2
Introduzione
Processo
di Progettazione della BD
progettazione logica: dallo schema concettuale viene derivato: uno schema logico standard gli schemi esterni necessari progettazione fisica: a partire dallo schema logico viene derivato: uno schema fisico (strutture di accesso) uno schema logico ottimizzato
G. Mecca - mecca@unibas.it - Basi di Dati 3
Introduzione
Progettazione
Logica
lobiettivo fare in modo che la base di dati sia normalizzata (priva di anomalie) algoritmo sistematico
Progettazione
Fisica
lobiettivo fare in modo che la operazioni sulla base di dati siano efficienti problema poco sistematizzabile
G. Mecca - mecca@unibas.it - Basi di Dati 4
Progettazione Fisica
Lobiettivo
sono le prestazioni
che influenzano le prestazioni
organizzazione dei file e strutture di accesso schema logico operazioni (query e transazioni) parametri dellarchitettura (buffer, dischi ecc.)
Questi
si comincia con lo schema standard le strutture di accesso standard si accumula informazione sul funzionamento e si valutano le prestazioni sulla base dei dati raccolti si procede alla messa a punto dei parametri unattivit condotta periodicamente
G. Mecca - mecca@unibas.it - Basi di Dati 6
questa lezione
panoramica sulla progettazione fisica e il tuning discuteremo le principali classi di parametri descriveremo delle linee guida non c la pretesa di essere esaustivi
Punto
di partenza
la query viene inviata al DBMS interattivamente o da unapplicazione il DBMS effettua lanalisi sintattica del codice SQL il DBMS effettua le verifiche sulle autorizzazioni di accesso il DBMS esegue il processo di ottimizzazione della query
G. Mecca - mecca@unibas.it - Basi di Dati 8
di ottimizzazione
scelta dellordine di applicazione degli operatori algebrici necessari strategia di calcolo del risultato di ciascun operatore algebrico attraverso le strutture di accesso disponibili
G. Mecca - mecca@unibas.it - Basi di Dati 9
effettuare lottimizzazione
vengono valutati molti diversi piani di esecuzione alternativi lottimizzatore dispone di statistiche sul contenuto della base di dati (dimensione delle tabelle, dimensione dei record, dimensione degli indici, selettivit ecc.) sulla base delle statistiche viene stimato il costo di ciascun piano di esecuzione (numero di accessi ai blocchi su disco)
G. Mecca - mecca@unibas.it - Basi di Dati 10
Un Esempio
Consideriamo
CREATE TABLE Docente ( codice char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); CREATE TABLE Studente ( matricola integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Docente(codice) );
G. Mecca - mecca@unibas.it - Basi di Dati 11
Un Esempio
Studiamo
la seguente interrogazione: Nomi e cognomi dei tesisti di Christian Vieri iscritti alla laurea specialistica
SELECT Studente.nome, Studente.cognome FROM Docente, Studente WHERE Docente.codice=Studente.relatore AND Studente.ciclo = laurea sp. AND Docente.cognome = Vieri;
12
Un Esempio
Forma
p S.nome, S.cognome
Albero degli operatori della query
standard
s D.codice=S.relatore
AND S.ciclo=laurea sp. AND D.cognome=Vieri
SELECT S.nome, S.cognome FROM Docente AS D, Studente AS S WHERE D.codice=S.relatore AND S.ciclo = laurea sp. AND D.cognome = Vieri;
X S D
(S X D) )
13
Un Esempio
Non
p S.nome, S.cognome
s D.codice=S.relatore
AND S.ciclo=laurea sp. AND D.cognome=Vieri
X
S
Piano A
D.codice=S.relatore
Piano B
D
14
Un Esempio
In
In
lalbero degli operatori da solo non basta a stabilire se una strategia migliore di unaltra necessario considerare le strutture di accesso disponibili
G. Mecca - mecca@unibas.it - Basi di Dati 15
p S.nome, S.cognome
s S.ciclo=laurea sp.
D.codice=S.relatore
s S.ciclo=
laurea sp.
s D.cognome
=Vieri
s D.cognome
=Vieri
Piano C
Piano D
D
16
Un Esempio
In
generale
17
attraverso indici
temporaneo
creazione di strutture aggiuntive per raggruppare le ennuple (es: ordinamenti, tabelle di hash in memoria centrale)
G. Mecca - mecca@unibas.it - Basi di Dati 18
ricerca nellindice
Indice
di Hash sullattributo
19
Esecuzione di un Join
Strategia
elementare
S JOIN D ON S.codice=D.rel.
per ogni ennupla di S per ogni ennupla di D se S.codice=D.relatore allora produci una ennupla del risultato
G. Mecca - mecca@unibas.it - Basi di Dati 20
Esecuzione di un Join
Cicli
Esecuzione di un Join
Sort-Merge
Join
creo una copia ordinata delle tabelle genero il risultato per scansione lineare particolarmente efficiente se una delle tabelle gi ordinata
G. Mecca - mecca@unibas.it - Basi di Dati 22
Esecuzione di un Join
Hash
Join
costruisco in memoria centrale una tabella di hash per entrambe le tabelle sullattr. di join scandisco una tabella e per ciascun valore uso la funzione di hash per localizzare i bucket di ennuple corrispondenti
G. Mecca - mecca@unibas.it - Basi di Dati 23
Piano C
Supponiamo
che:
p S.nome, S.cognome
D.codice=S.relatore
scansione lineare
Join
s S.ciclo=
laurea sp.
s D.cognome
=Vieri
sort-merge
Piano
completo
Piano C
D
24
Piano D
Supponiamo
s D.cognome
=Vieri
hash
Join
Piano D
D
25
Piano D Completo
p S.nome, S.cognome
s S.ciclo=laurea sp.
D.codice=S.relatore Ciclo nidificato con indice (uso lindice secondario su S.relatore)
s D.cognome
=Vieri
Piano D
26
Supponiamo che:
indice di hash sul nome docente indice secondario sul ciclo dello studente
p S.nome, S.cognome
D.codice=S.relatore
s S.ciclo=
laurea sp.
s D.cognome
=Vieri
Piano C
D
27
Ottimizzazione
Tutti
i DBMS di fascia alta consentono di consultare i piani di esecuzione scelti Comando EXPLAIN
sintassi tipica: EXPLAIN <select> illustra il piano di esecuzione e fornisce la stima di costo da parte dellottimizzatore utilizzabile sia con PgSQL che con MySQL
28
tipico
dopo una fase iniziale, la base di dati viene sottoposta a valutazione delle prestazioni le prestazioni sono inadeguate necessario intervenire per migliorare le prestazioni mettendo a punto i parametri
Punto
di partenza
29
carico applicativo
G. Mecca - mecca@unibas.it - Basi di Dati
messa a punto non possibile per tutte le possibili interrogazioni Si considerano le operazioni pi frequenti e rilevanti Carico applicativo
lista di interrogazioni lista di aggiornamenti prestazioni attese per ciascuna (es: <2s, oppure numero di transazioni al minuto)
G. Mecca - mecca@unibas.it - Basi di Dati 30
Strutture di Accesso
Principale
forma di intervento
aggiunta di indici
Attenzione
gli indici migliorano le prestazioni ma rallentano gli aggiornamenti richiedono spazio su disco necessario un compromesso
G. Mecca - mecca@unibas.it - Basi di Dati 32
Strutture di Accesso
Il
caso estremo: base di dati di sola lettura Esempio (Shasha, Database Tuning)
il sistema informativo di Ellis Island archivio degli immigrati in USA tra l800 e i primi del 900 (milioni di ennuple) ricerche per cognome, nome e anno di arrivo
E
Strutture di Accesso
Linea
guida n.1
opportuno introdurre un indice solo se contribuisce a migliorare le prestazioni di pi di una interrogazione del carico applicativo
Attenzione:
non sempre lottim. riesce ad usare un indice es: select * from Impiegato where stipendioAnnuo/12>3000 verificare il piano di esecuzione prima e dopo
G. Mecca - mecca@unibas.it - Basi di Dati 34
Strutture di Accesso
Linea
guida n.2
gli attributi su cui intervenire sono quelli che compaiono in join e selezioni per condizioni di uguaglianza (es: stipendio=5000) sono da preferirsi indici hash per condizioni su intervalli (es: stipendio>5000 and stipendio <10000) sono da preferirsi B+-tree
G. Mecca - mecca@unibas.it - Basi di Dati 35
Strutture di Accesso
Linea
guida n.3
select * from impiegati where stipendio = 10000 lindice su stipendio potrebbe non servire se sono molti ad avere uno stipendio uguale
G. Mecca - mecca@unibas.it - Basi di Dati 36
Strutture di Accesso
Linea
guida n.4
n.1:
n.2:
forme
select * from Impiegato where stipendioAnnuo/12>3000 select * from Impiegato where stipendioAnnuo>3000*12
G. Mecca - mecca@unibas.it - Basi di Dati 38
forme di riscrittura
di isolamento
il livello standard SERIALIZABLE in molti casi READ COMMITTED adeguato in generale, opportuno separare interrogazioni interattive e aggiornamenti
G. Mecca - mecca@unibas.it - Basi di Dati 39
detto che lo schema normalizzato sia il pi efficiente Quattro forme di intervento principali
partizionamenti di tabelle aggregazioni di tabelle denormalizzazione di tabelle aggiunta di informazione ridondante
G. Mecca - mecca@unibas.it - Basi di Dati 40
possibili soluzioni
le modifiche allo schema logico vanno decise molto presto (subito dopo la progettazione logica) oppure, se possibile, si crea uno schema esterno uguale al vecchio schema logico
G. Mecca - mecca@unibas.it - Basi di Dati 41
di tabelle
la tabella Studente
chiave primaria (matricola) attributi anagrafici (nome, cognome, codice fiscale, indirizzo, reddito del padre ecc.) attributi accademici (ciclo, anno di corso, relatore, tirocinio, tutor ecc.)
G. Mecca - mecca@unibas.it - Basi di Dati 42
DatiAnagraficiStudente: matricola e tutti gli attributi anagrafici DatiUniversitariStudente: matricola e tutti gli attributi universitari
Conviene
se
le operazioni richiedono di accedere raramente a tutti i dati in questo caso necessario un join
G. Mecca - mecca@unibas.it - Basi di Dati 43
questo un esempio di ristrutturazione dello schema che deve essere effettuato molto presto le viste non servono definire la vista Studente corrispondente al join delle tabelle partizionate non darebbe nessun beneficio in termini di prestazioni
G. Mecca - mecca@unibas.it - Basi di Dati 44
di tabelle
Studente e Tirocinio
chiave esterna matricola di tirocinio se laccesso ai dati del tirocinio frequente, conviene riunirli in ununica tabella si evitano i join aumentano i valori nulli posso definire due viste per pres. lo schema
G. Mecca - mecca@unibas.it - Basi di Dati 45
di tabelle
Docente e Numeri
Numeri(numero, docente FK) se devo frequentemente stampare lelenco di nomi e numeri posso aggiungendo il nome del docente alla tabella Numeri aumenta la complessit degli aggiornamenti
G. Mecca - mecca@unibas.it - Basi di Dati 46
questo caso
si generano (modeste) anomalie di aggiornamento esempio: ogni volta che cambio il cognome di un docente devo intervenire tanto su Docente che su Numeri per evitare di creare istanze inconsistenti della base di dati necessario utilizzare transazioni
G. Mecca - mecca@unibas.it - Basi di Dati 47
derivabile per aggregazione dal join di studenti ed esami pu essere memorizzato esplicitamente come attributo di Studente costringe ad utilizzare le transazioni
G. Mecca - mecca@unibas.it - Basi di Dati 48
Parametri Architetturali
Buffer
aumentare il buffer aumenta lhit ratio non opportuno andare oltre un certo limite
Dischi
disporre i file su pi dischi aumenta le prestazioni es: disco per il log (il log un tipico collo di bottiglia)
G. Mecca - mecca@unibas.it - Basi di Dati 49
Concetti Avanzati
Introduzione
Ottimizzazione
delle Interrogazioni
Un Esempio
Messa
a Punto (Tuning)
Carico Applicativo Strutture di Accesso Modifiche allo Schema Logico Parametri Architetturali
G. Mecca - mecca@unibas.it - Basi di Dati 50
This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
51