Repetisjonsforelesning, SQL og utover

Like dokumenter
Transaksjonshåndtering Del 2

INF3100 V2018 Obligatorisk oppgave nr. 2

Transaksjonshåndtering Del 2

Transaksjonshåndtering Del 2

Transaksjoner. transaksjon. når starter/slutter 1 trans.?

Isolasjon i postgres og mysql

DBS20 - Introduksjon til transaksjonsprosessering og teori

DBS22 Databasegjenopprettingsteknikker

Spørsmålskompilering del 1

Transaksjonshåndtering Del 3

Transaksjonshåndtering Del 3

Repetisjon av transaksjonshåndtering og samtidighetskontroll. Lana Vu

Transaksjonshåndtering Del 3

Presentasjon av doktorgradsprosjekt

DBS18 - Strategier for Query-prosessering

Transaksjonshåndtering Del 3

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Spørsmålskompilering del 1

DBS21 Samtidighetskontrollteknikker

Øving 5: Transaksjonshåndtering, logging og normalisering

Transaksjonshåndtering Del 3

For alle ikke-trivielle FDer X A i R: eller A er et nøkkelattributt i R eller X K for noen kandidatnøkkel K i R

Transaksjonshåndtering Del 3

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Oppgave 1 Datamodellering 25 %

Transaksjonshåndtering og samtidighetskontroll

Hva har vi gjort? SQL og Databasedesign

INF1300 Introduksjon til databaser

Effektiv eksekvering av spørsmål

Samtidighetsfenomener og anomalier i eksekveringsplaner. INF Ellen Munthe-Kaas 1

Andre sett obligatoriske oppgaver i INF3100 V2013

Transaksjonsmodell. Samtidighet (1) ACID-transaksjoner. Samtidighet (2) Systemkræsj (1) Kapittel 17, Coping With System Failure

Andre sett obligatoriske oppgaver i INF3100 V2012

UNIVERSITETET I OSLO

ndtering og samtidighetskontroll

Systemfeil og logging

Samtidighetsfenomener og anomalier i eksekveringsplaner (kursorisk) INF3100 Ellen Munthe-Kaas 1

Skisse til løsning av eksamensoppgave i TDT4145 Datamodellering og databasesystemer

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

Andre sett obligatoriske oppgaver iinf3100v2011

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Transaksjonshåndtering og samtidighetskontroll

Oppgave 1 ER- og relasjonsmodell 10 %

Transaksjonshåndtering og samtidighetskontroll

Normalisering. ER-modell

Spørsmålskompilering del 2

INF1300 Introduksjon til databaser

Effektiv eksekvering av spørsmål

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Systemfeil og logging

Effektiv eksekvering av spørsmål

Oppgave 1 Datamodellering 22 %

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Eksamensoppgåve i TDT4145 Datamodellering og databasesystem

Minikompendium TDT4145 databasemod og dbsys

Effektiv eksekvering av spørsmål

Systemfeil og logging

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE I TDT4145 DATAMODELLERING OG DATABASESYSTEMER. Faglig kontakt under eksamen: Svein Erik Bratsberg og Roger Midtstraum

Deling av data Transaksjoner

Spørsmålskompilering

Databasesystemer, oversikt

Løsning til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Systemfeil og logging

Deling av data Transaksjoner

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

Transaksjoner og flerbrukerproblematikk. Transaksjoner

INF3100 Databasesystemer. Transaksjonshåndtering. ndtering Del 3. Ragnar Normann

Effektiv eksekvering av spørsmål

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

Plan for dagen. Måter å tenke på

Databaser fra et logikkperspektiv

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Andre sett obligatoriske oppgaver i INF3100 V2009

UNIVERSITETET I OSLO

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Repetisjon: Normalformer og SQL

Andre sett obligatoriske oppgaver i INF3100 V2008

Systemfeil og logging

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

INF2220: Forelesning 2

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

Spørsmålskompilering del 2

UNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.

SQL: SELECT-spørringer

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

INF1300 Introduksjon til databaser

INF2220: Forelesning 2

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

Andre sett obligatoriske oppgaver i INF3100 V2010

Systemfeil og logging

Problemer med Indre joins. Inner joins og manglende verdier med aggregater. Left Outer Join. Outer Joins. Hvor mange har kjøpt hvert produkt?

Databasemodellering og DBMS. Oppsummering

Transkript:

Repetisjonsforelesning, SQL og utover Evgenij Thorstensen V18 Evgenij Thorstensen Repetisjon V18 1 / 23

Temaer SQL, semantikk Databasearkitektur Spørringskompilering og optimisering Indekser Transaksjonshåndtering Logging Samtidighetskontroll Evgenij Thorstensen Repetisjon V18 2 / 23

SQL, recap semantikk Først beregnes SELECT-FROM-WHERE Så leses GROUP BY, og tabellen deles opp i en gruppe per verdi av det som er i GROUP BY Så beregnes aggregater for hver gruppe ny tabell, en rad per gruppe Så filtreres denne på HAVING-betingelser. Andre ting: Korrelerte subspørringer, rekursiv SQL. Evgenij Thorstensen Repetisjon V18 3 / 23

Korrelerte subspørringer Ikke spesielt effektivt, men nyttig og funker ofte bra. SELECT employee_number, name FROM employees AS emp WHERE salary > ( SELECT AVG(salary) FROM employees WHERE department = emp.department); For-løkke over radene i emp. Ingen GROUP BY i indre spørring nødvendig. Evgenij Thorstensen Repetisjon V18 4 / 23

Rekursiv SQL Rekursiv spørring kjører igjen og igjen på sitt eget resultat + vanlige tabeller. WITH RECURSIVE subordinates AS ( SELECT employee_id, manager_id, full_name FROM employees WHERE employee_id = 2 UNION SELECT e.employee_id, e.manager_id, e.full_name FROM employees e INNER JOIN subordinates s ON s.employee_id = e. manager_id ) SELECT * FROM subordinates; Evgenij Thorstensen Repetisjon V18 5 / 23

Databasearkitektur Databasesystemer lagrer (nesten) alt som tabeller. Fysisk realiseres dette via blokker av records, som er lese/skrive-enhet. Vi har ikke gått i dybden på dette. Evgenij Thorstensen Repetisjon V18 6 / 23

Optimisering av spørringer SQL oversettes til relasjonsalgebra, som igjen oversettes til faktiske algoritmer for deloperasjonene. Optimisering i begge stegene. Basert på generelle regler samt estimering av resultatstørrelser. Det siste basert på statistikk om data i våre tabeller. Evgenij Thorstensen Repetisjon V18 7 / 23

Algebraisk optimisering Generelt: Seleksjoner dyttes inn, eller ned. Joins utføres minste først ut fra estimering. Målet er å bli kvitt tupler så raskt som mulig, samt unngå unødvendig lesing fra disk. Evgenij Thorstensen Repetisjon V18 8 / 23

Valg av algoritmer Hovedsakelig ut fra antall IO-operasjoner, da disse er mye dyrere enn CPU. Indekser anvendes der det forventes at resultatet er lite. Joins via hashing eller sortering, eventuelt ved for-loop. Flerfasealgoritmer hvis det ikke er nok minne. Evgenij Thorstensen Repetisjon V18 9 / 23

Estimering Basert på antagelser om fordelingen av verdier på tuplene. Vanligvis antar vi en jevn fordeling. σ x=c (R) = 1 V(R) T(R), like mange tupler per verdi. σ x<c (R) = 1 3T(R), litt ut av lufta. σ x c (R) = T(R) 1 V(R) T(R), motsatt av likhet. Joins estimeres via seleksjon over produkt. R x=y S = σ x=y (R S). Evgenij Thorstensen Repetisjon V18 10 / 23

Joinestimering Vi antar at alle verdier matches. R x=y S får da tupler. T(R) T(S) max(v(r), V(S)) AND og OR blir til sum og produkt av estimater for hver betingelse (grovt sagt). Evgenij Thorstensen Repetisjon V18 11 / 23

Indekser Indekser tillater oss å direkte hente relevante blokker. Søketrær (B-tree) og hashing er de vanligste. Tett versus tynn: Hvis tuplene er sortert på nøkkelen, kan peke til blokker i stedet for til tupler. Vanlig med tett, å holde data sortert er for krevende. Indekser er bra når man er ute etter relativt få tupler/blokker. Evgenij Thorstensen Repetisjon V18 12 / 23

Transaksjoner ACID: Atomicity, Consistency, Isolation, Durability. Disse ivaretas ved hjelp av logging samtidighetskontroll Mye optimistiske algoritmer: Rydd opp hvis/når det går galt. Evgenij Thorstensen Repetisjon V18 13 / 23

Logging Undo, Redo, og Undo/Redo. Alt sammen Write-Ahead Logging. Før en skriveoperasjon foretas på ekte data på disk, logges det til disk gammel verdi (undo) ny verdi (redo) begge (undo/redo) To viktige ting: recovery og checkpointing. Evgenij Thorstensen Repetisjon V18 14 / 23

Recovery Ved undo, kan ha skitne data på disk. Men, har gamle verdier i logg. Ved redo, kan ikke ha skitne data på disk. Men, kan ha rene data i logg, som kan skrives til disk. Ved undo/redo, begge deler. Gir full fleksibilitet ang. skriving til disk, men krever dobbelt med plass. Evgenij Thorstensen Repetisjon V18 15 / 23

Checkpointing Prosedyre for å kutte loggen/tvinge disk-skriving. For undo, noter aktive transaksjoner, skriv en END CKPT når de er ferdige. For redo, tving diskskriving for alt som venter. Samme ide for U/R. Evgenij Thorstensen Repetisjon V18 16 / 23

Samtidighet Isolasjonsnivåer: Vi har sett mye på serialiserbarhet. Protokoller basert på Låsing Tidsstempling SI/MVCC Andre begreper: deadlock, starvation, cascading rollback. Evgenij Thorstensen Repetisjon V18 17 / 23

Serialiserbarhet En plan er serialiserbar hvis resultatet er ekvivalent med en seriell plan. Konfliktserialiserbarhet: Serialiserbarhet uavhengig av hva som leses og skrives. Vi krever ekvivalens, så: Operasjoner fra samme transaksjon er i konflikt Skriving er i konflikt med både lesing og skriving når to transaksjoner opererer på samme element. Evgenij Thorstensen Repetisjon V18 18 / 23

Konfliktserialiserbarhet Operasjoner som er naboer og ikke er i konflikt, kan bytte plass uten å endre resultatet. Hvis dette fører til en seriell plan, er vår opprinnelige plan serialiserbar. Kan testes ved hjelp av presedensgraf. Evgenij Thorstensen Repetisjon V18 19 / 23

2PL Tofaselåsing: Kan ikke slippe en lås og så ta en ny. Sikrer serialiserbarhet. Varianter: strikt 2PL (skrivelåser slippes helt til slutt), sikrer mot cascading rollback (fordi skitten les er umulig). Kan også legge på shared locks, upgrade locks; unngår en del deadlock. Evgenij Thorstensen Repetisjon V18 20 / 23

Tidsstempling Optimistisk protokoll. Holder rede på hvem som sist leste/skrev dataelementer. Hvis T skal skrive A og en nyere T har lest A, abort T. Hvis T skal lese A og en nyerer T har skrevet A, abort T. Pluss litt book-keeping med commit-flagg og overskriving. Evgenij Thorstensen Repetisjon V18 21 / 23

Tidsstempling med validering Holder rede på hvilke elementer hver transaksjon har skrevet og lest. Transaksjoner bufrer det de skal skrive. Når de er ferdige, blir de validert før de får skrive. Validering sjekker overlapp mellom lese- og skrivemengdene mot andre allerede validerte transaksjoner. Evgenij Thorstensen Repetisjon V18 22 / 23

SI med FUW Vanligvis implementert med skrivelåser. Transaksjoner leser siste committede versjon av elementer. Skriving iht. lås, men: Hvis flere samtidige transaksjoner skal skrive samme element, vil den første som committer vinne. De andre blir abortert. Sikrer ikke serialiserbarhet, men sikrer mot det meste av anomalier. Evgenij Thorstensen Repetisjon V18 23 / 23