1 Facoltà di Ingegneria di Modena Corso di Laurea in Ingegneria Informatica Università degli Studi di Modena e Reggio Emilia Confronto dei DBMS RELAZIONALI SQLServer e MySQL Relatore: Prof. Sonia Bergamaschi Correlatore: Ing. Maurizio Vincini Candidato: Luca Sculco
2 Obiettivi - confronto dei tempi di risposta a diversi tipi di query: tabelle piccole, medie e grandi dimensioni join fra più tabelle join fra più tabelle indicizzate - guadagno di tempo con indici - scelta del DBMS
3 Query su singola tabella - 3 tipi di query: 20%, 50%, 80% - 4 tabelle di diversa grandezza: numero di tuple
4 Tempi di risposta (a) 1 – query senza cache su singola tabella tempo in ms numero di record
5 Tempi di risposta (b) 2 – query con cache su singola tabella tempo in ms numero di record
6 JOIN a 2 vie (a) - 2 tabelle: esame con record (tabella esterna) studente210k con record (tabella interna) - operazioni: - FULL JOIN non supportato da MySQL inner join left join right join full join record record …..esame left join studente210k….. UNION …..esame right join studente210k…..
7 JOIN a 2 vie (b) senza cache con cache tempo in ms
8 JOIN a 3 vie (a) - 3 tabelle: corso con 72 record (tabella esterna) esame con record (1° tabella interna) studente210k con record (2° tabella interna) - operazioni: inner join full join record record
9 JOIN a 3 vie (b) senza cache con cache tempo in ms
10 JOIN a 4 vie (a) - 4 tabelle: corso con 72 record (tabella esterna) docente con 110 record (1° tabella interna) esame con record (2° tabella interna) studente210k con record (3° tabella interna) - operazioni: inner join full join record record
11 JOIN a 4 vie (b) senza cache con cache tempo in ms
12 INDICI: JOIN a 2 vie (a) - 2 tabelle: esame con record (tabella esterna) studente210k con record (tabella interna) - Indici clustered su PK: matricola,corso in ESAME matricola in STUDENTE210K - select e clausola where nella query: matricolacorsodatavoto …. matricolanomecognomecittàacorso ….…..…. ESAMESTUDENTE210K s.matricola,e.voto,s.città …… where e.corso= record
13 INDICI: JOIN a 2 vie (b) - Indici unclustered nella tabella ESAME: A: indice su corso B: indice su matricola e corso C: indice su matricola e corso,voto D: indice su corso,voto E: nessun indice tempo in ms numero record 2000
14 INDICI: JOIN a 3 vie (a) - 3 tabelle:corso con 72 record (tabella esterna) esame con record (1° tabella interna) studente210k con record (2° tabella interna) - Indici clustered su PK: codice_corso in CORSO - select e clausola where nella query: codice_corsonome_corsodocente …. CORSO s.matricola,e.voto,c.docente,s.città …… where c.docente= record
15 INDICI: JOIN a 3 vie (b) - Indici unclustered nella tabella ESAME e CORSO: F: indici su corso,voto G: indici su corso,voto e docente H: nessun indice tempo in ms numero record 1002
16 CONCLUSIONI - prezzo di licenza server SQLServer2000 da 730 $ a $ MySQL 5.0 da 600 $ a 5000 $ - piattaforme SQLServer disponibile solo su Windows MySQL disponibile sia su Unix che su Windows Considerate inoltre le prestazioni: - tempo di risposta elevato per query complesse - buon tempo di risposta per query semplici - basso costo di licenza - scelta del sistema operativo - prestazioni elevate per qualsiasi query - costo di licenza non trascurabile - sistema operativo Windows MySQL SQLServer