Teknologi Flashcards

1
Q

Findes der tilfælde hvor det kan være nødvendigt at lave en explicit transaktion på en enkelt SQL query?

A

Ja, hvis operationen udføres på en delt ressource og tilgangen til samtidighedskontrollen er pessimistisk. (Låsning af data i databasen)

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

Hvilke to strategier for samtidighedskontrol arbejder vi med?

A

Pessimistisk og optimistisk samtidighedskontrol.

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

Hvad kendetegner pessimistisk samtidighedskontrol?

A

Låsning af dataen i databasen. Påvirker performance negativt. Introducerer deadlocks.

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

Hvilke to slags låsninger bruges der i den pessimistiske samtidighedskontrol? Og hvad kendetegner dem?

A

Exclusive lock (write): låser den data der arbejdes på og fratager al slags adgang fra øvrige tråde eller transaktioner.
Shared lock (read): låser den data der arbejdes på, men tillader andre tråde eller transaktioner at læse på dataen. Introducerer læsefænomener der kan forårsage inkonsistent data.

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

Hvilke forskellige læse fænomener introducerer brugen af en shared lock til håndtering af samtidighedsproblematikker? Nævn dem blot med navn.

A
  1. Dirty reads
  2. Non-repeatable reads
  3. Phantom reads
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvornår opstår læse fænomenet “dirty reads” i forbindelse med brugen af shared lock til samtidighedskontrol?

A

Eks. Når en transaktion opdaterer data, som en anden transaktion læser på, hvorefter første transaktion laver rollback. På den måde har anden transaktion læst en forkert værdi.

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

Hvornår opstår læse fænomenet “non-repeatable reads” i forbindelse med brugen af shared lock til samtidighedskontrol?

A

Eks. Når en transaktion læser på data to gange, og en anden transaktion opdaterer dataen mellem de to læsninger. På den måde får første transaktion ikke det samme resultat begge gange.

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

Hvornår opstår læse fænomenet “phantom reads” i forbindelse med brugen af shared lock til samtidighedskontrol?

A

Eks. Når en transaktion læser på data to gange, og en anden transaktion opdaterer dataen mellem de to læsninger. På den måde får første transaktion enten flere eller færre rækker anden gang til sammenligning med første gang.

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

Hvordan undgår man at de forskellige læse fænomener forårsager inkonsistent data?

A

Ved at definere isolationsniveauet på den connection til databasen som transaktionerne eller trådene benytter - altså med andre ord defineres det hvordan, og hvor “strengt”, dataen låses.

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

Hvilke forskellige isolationsniveauer findes der til låsning af data i en database?

A
  • Serializable: Låser hele datasættet
  • Repeatable read: Låser en række
  • Read comitted: Låser et enkelt felt
  • Read uncomitted: Låser intet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hvad viser billedet?

A

De forskellige isolationsniveauer, og hvilke læse fænomener de hver beskytter imod.

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

Hvad kendetegner optimistisk samtidighedskontrol?

A

Der benyttes ikke låsning af dataen i databasen. Samtidighedskontrollen håndteres med logik i applikationskoden. Bedre performance - specielt hvis der er mange brugere af systemet.

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

Hvordan løser den optimistiske tilgang samtidighedsproblematikker?

A

Ved versionsstyring - gøres nemmest ved at påføre en Timestamp attribut i databasen der automatisk opdateres hver gang der foretages ændringer i en række. På den måde kan det tjekkes hvorvidt brugerens version af dataen er den rigtige.

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

Hvad er en deadlock? Og hvilke 4 guidelines er der til at undgå deadlocks i database transaktioner?

A

Deadlock: Når to transaktioner står i en uendelig løkke og venter på hinanden.
Guidelines:
1. Hvis read operationer ikke er nødvendige i transaktionen, flyttes de udenfor.
2. Altid tilgå tabeller i samme rækkefølge
3. Undgå at bruge SELECT* - for at undgå at låse mere end der er behov for
4. Brug optimistisk samtidighedskontrol hvis det er muligt

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

Hvornår benytter man som udgangspunkt altid en pessimistisk tilgang til samtidighedskontrol?

A

Når en transaktion indeholder mere end én SQL query - og specielt hvis én eller flere opdaterer eller sletter.

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

Hvornår benytter man som udgangspunkt altid en optimistisk tilgang til samtidighedskontrol?

A

Når der er mange menneskelige brugere af systemet.

17
Q

Hvorfor har den pessimistiske tilgang til samtidighedskontrol generelt dårligere performance ved mange brugere?

A

Fordi det kan forårsage ventetider i forbindelse med, at adgangen til en datamængde låses af en enkelt bruger - så er de øvrige brugere jo nødt til at vente.

18
Q

Hvornår opstår der samtidighedsproblematikker?

A

Når to eller flere tråde eller transaktioner prøver at tilgå en delt ressource på samme tid.

19
Q

Hvad er ACID principperne? Og hvornår bruges de?

A
  • Atomicity: alt eller intet
  • Concistency: dataen må ikke efterlades inkonsistent
  • Isolation: transaktioner må ikke påvirke hinanden - eller hinandens data.
  • Durability: gemt data må ikke mistes (håndteres som udgangspunkt af database systemet)

Bruges til design af transaktioner.

20
Q

Hvad er den kritiske sektion i et system?

A

Den delte ressource som flere tråde eller transaktioner tilgår.

21
Q

Hvad er synkronisering? Og hvilke samtidighedsproblematikker bruges det til at løse?

A

Synkronisering sørger for, at kun én tråd eller transaktion har adgang til en delt ressource ad gangen. Adgangen er serialiseret. Synkroniseringen er kun gældende på den maskine systemet køres på, og derfor kan synkronisering ikke bruges til at løse samtidighedsproblematikker ved brug af flere maskiner.

22
Q

Hvad er en Mutex? Og hvad bruges den til?

A

En Mutex (Mutual exclusion) sørger for, at kun én tråd eller transaktion kan tilgå en delt ressource af gangen. Bruges til at indføre synkronisering.

23
Q

Hvad er en explicit transaktion? Og hvornår bruges det?

A

Når en transaktion (start, commit og rollback) håndteres i systemkoden i stedet for i database systemet. Bruges når to eller flere querys skal eksekveres som en atomisk operation, eller hvis der foretages samtidighedskontrol med en eller flere transaktioner efter den pessimistiske tilgang.