Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Query optimization MICHAEL I

Lignende præsentationer


Præsentationer af emnet: "Query optimization MICHAEL I"— Præsentationens transcript:

1 Query optimization MICHAEL I
Query optimization MICHAEL I. Schwartzbach Kristoffer just andersen Institut for datalogi

2 Collection Classes Matematiske strukturer som standard klasser i Java
Basale mængder: int, String Set<S>: endelige delmængder af S: 2 Map<S,T>: endelige funktioner fra S til T: S T List<S>: endelige sekvenser af S: S* class C{S s,T t}: kartesisk ptodukt af S og T: S×T Alle sædvanelige operationer er tilgængelige S

3 Abstrakt vs konkret Abstrakte collection klasser har konkrete implementationer Map: HashMap, LinkedHashMap, … Set: HashSet, TreeSet, EnumSet, … List:; ArrayList, LinkedList, … Gør forskellige delmængder af operationer effektive

4 datastrukturer En datastruktur er:
en sammensætning af matematiske strukturer en nøje udvalgt samling af operationer en specielt effektiv implementation Søgetræ: 2 , insert, member, delete, size Priotitetskø: 2 , insert, deletemin, empty Stak: S*, push, pop, empty Union-Find: 2 , singleton, union, find S S 2 S

5 prototyper Udstrakt brug af collection klasser kan give:
hurtigt byggede implementationer ikke nødvendigvis særligt effektive Query databasen: tabel: (String String)* direktiv (query): × (String (String ×String ×String)) String

6 Size matters Query: 300 linjer kode
parser, fortolker, engine (select, project, join) RASMUS: 20,000 linjer kode MySQL; 1,800,000 linjer kode

7 optimering Databaser, fortolkere og compilere udfører kode
men programmøren har næppe skrevet den bedste version… Derfor bruger de mange kræfter på optimering; laver en analyse af koden omskriver den til en mere effektiv version garanterer, at den giver samme resultat (sundhed)

8 Optimizere i praksis gcc –o3 bruger næsten al tiden på optimering
mest lokale forbedringer og kortslutning af kontrolflow ikke nye algoritmer og datastrukturer giver typisk op til 50% forbedring af køretiden Effekten på databaser er vilkårligt stor forskellen på om queries overhovedet kører eller ej involverer automatisk valg af algoritmer og datastrukturer

9 Hvor gode er compilere? /* naive */ for (i = 0; i < N; i++) {
a[i] = a[i] * 2000; a[i] = a[i] / 10000; } /* expert */ b = a; *b = *b * 2000; *b = *b / 10000; b++;

10 Bedre end dig! -o1 -o2 loop level sparc mips alpha naive 20.5 21.6 7.9
for (i = 0; i < N; i++) { a[i] = a[i] * 2000; a[i] = a[i] / 10000; } /* expert */ b = a; *b = *b * 2000; *b = *b / 10000; b++; loop level sparc mips alpha naive 20.5 21.6 7.9 -o1 8.8 12.3 3.3 -o2 11.2 3.0 expert 19.5 17.6 7.6 12.5 15.4 4.1 10.7 12.9 3.9

11 Query optimering En optimizer er aldrig helt optimal
Man kan altid fange lidt flere specialtilfælde Masser af tommelfingerregler: project og select før join fjern søjler, der ikke bruges i svaret kopier select til begge sider af join

12


Download ppt "Query optimization MICHAEL I"

Lignende præsentationer


Annoncer fra Google