Performance Flashcards

1
Q

Hvad er en page? Og hvor stor er den?

A

En page er den mindste enhed, der hentes fra/skrives til harddisken og den er 8K.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Forklar dette performance tiltag: Buffer

A

Når man læser en page op fra databasen, så gemmer man den i RAM i et stykke tid, da den sandsynligvis skal bruges igen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Forklar dette performance tiltag: Pre-fetching

A

Når en page læses op fra harddisken, læses de efterfølgende pages med op, fordi man gætter på, at de nok skal bruges om lidt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvad betyder det at databasen er heap organiseret?

A

Hvis DBMS vælger at gemme en ny record i en tilfældig page, hvor der er plads, siger vi at tabellen er heap-organiseret eller at vi gemmer recorden i heapen.

Hvis DBMS i stedet vælger at gemme recorden efter et system siger vi at tabellen er indekseret

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvad er en record?

A

Svarer til en række i en tabel. Så blot et antal attributter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Forklar kort hvad et clustered indeks og non-clustered (NC) indeks er

A

Clustered indeks er en måde at organisere base data i en tabel.
NC er en anden måde at organisere sin tabel, men her refererer man til base data.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvor mange clustered index kan en tabel have?

A

I SQL Server kan en tabel kun have ét clustered indeks. Dette skyldes, at clustered indekset bestemmer den faktiske fysiske rækkefølge af dataene i tabellen. Når du opretter et nyt clustered indeks på en tabel, vil det erstatte det eksisterende clustered indeks, hvis der allerede er et.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Clustered indeks (træbaseret)
Hvilke data ligger i bladene og hvilke ligger i knuderne?

A

I et clustered indeks findes de faktiske records KUN i bladene.
I knuderne findes der blot den attribut som er lavet indeks på. Bemærk en page/knude kan holde op til 500 børn. Så træet bliver meget bredt i stedet for dybt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvordan ser et søgetræ ud i et clustered indeks vs NC?

A

Det er det samme. Bortset fra i bladene.

I Clustered finder man base data i bladet og i NC finder man den attribut som indekset er lavet ud fra, samt en liste af pagenumre hvori man kan finde records med pågældende værdi.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hvorfor bruger NC indeks fremfor clustered?

A

Man kan kun have et clustered indeks pr. tabel. Så hvis man stadig gerne vil kunne søge igennem en tabel, men på en anden attribut end den som clustered er baseret på, kan det være smart at lave et NC indeks, som er baseret på den anden attribut.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad sker der hvis man sætter et nyt clustered indeks på en tabel?

A

Så vil ALLE records skulle flyttes rundt og bliver altså en dyr operation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Forklar de 2 selects, når tabellen er heap organiseret.
Altså når der ikke er noget indeks på tabellen og records bliver indsat ‘tilfældigt’.

A

Den første select
Den laver en table scan. Fordi den ved ikke om der findes andre ‘Andersen20113’, så den skal søge hele tabellen igennem da den ikke er indekseret.
Den anden select
Denne forespørgsel returnerer de første 25 rækker fra tabellen, sorteret efter kolonnen “name”. Når der ikke er nogen indeksstruktur, skal databasen lave et table scan, sortere rækkerne og derefter vælge de første 25. Dette kan være ressourcetungt og tidskrævende.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Forklar de 2 selects, når tabellen har et clustered indeks

A

Den første select
Det vil gå betydelig hurtigere da der søges en den attribut som der lavet indeks på.

Den anden select
Samme tilfælde. Her vil DBMS kunne udnytte at tabellen er sorteret og kan derved undgå at lave en table scan.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Forklar de 2 selects, når tabellen har et Nonclustered indeks

A

Den første select
Det vil gå betydeligt hurtigere også. Men den skal samtidig også hente resten af base data i en anden page.

Den anden select
Det samme som ovenfor. Her skal den bare gøre det for alle 25. Men de er sorteret efter navn, så det gøres stadig ret effektivt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvilke forespørgsler er indeks gode til?

A

SELECTs med WHERE dele
SELECTs med JOIN
SELECTS med ORDER BY

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvilke forespørgsler er indeks dårlige til?

A

Inserts vil tage længere tid
Update kan komme til at tage længere tid
Delete kan komme til at tage længere tid

17
Q

Hvad bliver oprettet her?
create index bigindex on big(name)

A

Her bliver lavet et non clustered indeks på tabellen ‘big’

18
Q

Hvad er ISAM?

A
19
Q

Hvad er B+?

A
20
Q

Hvad er fillfactor?

A
21
Q

Kan du fortælle lidt om optimizeren?

A
22
Q

Kan du forklare hvordan man kunne optimere denne operatorgraf?

A

Man kunne fx lave en Select inden Join, så man slap for et stort mellemresultat hvor det meste alligevel frasorteres

23
Q

Hvem laver den faktiske executionplan?

A

Optimizeren

24
Q

Forklar hvad der sker her
~~~
select navn
from person join postnummer on person.postnr=postnummer.postnr
and postdistrikt=’Aarhus C’
~~~

A

Her er den færdige execution plan som optimizeren har lavet efter den har kørt koden.

Først laver den en index scan på person (svarer til table scan). Finder 5 personer.
Den laver også et index seek på postnummer. Finder 2