Samtidighedskontrol Flashcards

1
Q

Hvorfor findes transaktioner?

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

Hvilke tre transaktionskommandoer findes der?

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

Hvad er ACID?

A

I daglig tale kalder man ofte
A og D = recovery
C og I = samtidighedskontrol

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

Hvornår kan samtidighedsproblemer opstå?

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

Hvilke to teknikker bruges der til samtidighedskontrol?

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

Hvilke slags låse findes der og hvordan fungerer de?

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

Hvad er granularitet?

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

Hvilke niveauer af granularitet findes der?

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

Hvad er versionering?

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

Hvad er versionering godt til?

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

Hvad er optimistisk samtidighedskontrol?

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

Hvad er pessimistisk samtidighedskontrol?

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

Hvilket isolations level skal man bruge for at implementere optimistisk samtidighedskontrol?

A

Snapshot

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

Hvilke klasser af samtidighedsproblemer er der?

A

Dirty read, unrepeatable read, phantom read

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

Hvad er dirty read?

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

Hvad er unrepeatable read?

A
17
Q

Hvad er phantom read? 👻

A
18
Q

Hvilket isolationsniveau bruges som standard af SQL server?

A

SQL Server bruger som standard isolationsniveauet READ COMMITTED, hvilket betyder, at en transaktion kan se kun de ændringer, der er blevet bekræftet (committed) af andre transaktioner. Det er en almindelig og afbalanceret indstilling, der leverer god ydeevne og samtidig sikrer datakonsistens.

19
Q

Fortæl lidt om transaktioner og samtidighedskontrol ud fra dette kode

A

I det givne kodeeksempel bruger det ikke eksplicit transaktionsstyring (begintran, commit, rollback), så hver SQL-kommando bliver udført som sin egen transaktion. Hvis der opstår en fejl i den anden INSERT, vil kun den pågældende INSERT-operation blive rullet tilbage, og dataændringer, der blev foretaget af den første INSERT, vil blive bevaret.

Dette er fordi der ikke er nogen eksplicit angivelse af en transaktion, der omgiver begge INSERT-operationer. Hver SQL-kommando udføres som en separat transaktion, medmindre der eksplicit oprettes en transaktion ved hjælp af SqlTransaction.

Hvis du ønsker at sikre, at begge operationer enten bliver gennemført eller rullet tilbage som en enhed, kan du bruge eksplicit transaktionsstyring ved at oprette en transaktion, udføre dine operationer og derefter enten forpligte eller rulle transaktionen tilbage baseret på resultaterne af dine operationer.

ChatGPT

20
Q

Hvad er Snapshot?

A

Snapshot isolation fungerer typisk ved at oprette en midlertidig kopi af databasen (en “snapshot”) ved begyndelsen af hver transaktion. Denne snapshot afspejler en øjeblikstilstand af databasen. Mens transaktionen udføres, ser den kun de data, der var tilgængelige på tidspunktet for snapshotoprettelsen, uanset de ændringer, der udføres af andre transaktioner i mellemtiden.

Fordelen ved snapshot isolation er, at det reducerer risikoen for samtidighedsproblemer som “non-repeatable reads” og “phantom reads” uden at kræve låsning af ressourcer i længere tid. Det giver høj samtidighed ved at tillade, at flere transaktioner udføres samtidigt, selvom de arbejder med de samme data.

ChatGPT

21
Q

Hvilket isolationsniveau skal man bruge for at implementere pessimistisk samtidighedskontrol?

A

Serializable

Isolationsniveauet “Serializable” eliminerer problemer som “dirty reads,” “non-repeatable reads,” og “phantom reads” ved at sikre fuldstændig isolering mellem transaktioner. Dog kan brugen af låse i hele transaktionen føre til potentielle ydelsesproblemer og blokeringer, da låste ressourcer ikke kan tilgås af andre transaktioner, før låsen er frigivet.

ChatGPT