Dbs1 - HSR Teil 2
Dbs1 - HSR Teil2
Dbs1 - HSR Teil2
Set of flashcards Details
Flashcards | 75 |
---|---|
Students | 11 |
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 03.01.2018 / 13.01.2020 |
Weblink |
https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6
|
Embed |
<iframe src="https://card2brain.ch/box/20180103_dbs1_hsr_teil_2_HLi6/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Beispiel Unterabfrage
select (...) where salaer = (select min(salaer) from angestellter inner join abteilung on abteilung.abtnr = angestellter.abtnr where abteilung.name = "Entwicklung");
Unterabfrage mit IN
select name from angestellter where persnr NOT IN (select distinct persnr projektzuteilung);
Unterabfrage mit EXISTS
Unterabfrage sucht passende Tupel aus der tabelle der Unterabfrage. Wenn ein Tupel gefunden wird liefert Exists den Wert true und das tupel aus der äusseren Abfrage erscheint im Resultat.
select name from angestellter a where EXISTS (select * from projektzuteilung where persnr = a.persnr);
Unterabfrage mit ANY
Für jedes tupel der äusseren Abfrage wird überprüft ob das gewählte Attribut kleiner/grösser/=ist, weder irgend eines aus der Resultatmenge der Unterabfrage. ANY liefert für solche Tupel true.
select (...) where ang.salaer < ANY (select salaer from angestellter ang1 inner join abteilung abt1 on ang1.abtnr = abt1.abtnr where abt1.name = 'entwicklung');
CTE
Common Table Expressions
Was sind CTE?
- sind temporäre Tabellen
- select, insert, update, delete
- können sich auf vorhergehende Hilfs-Querys beziehen
- Anstelle von Subqueries - mächtiger
- rekursive Variante ermöglicht rekursive Abfragen
CTE Beispiel
tmptable1 AS (select * from mytable), tmptable2 AS (select * from tmptable1) select * from tmptable2;
Views Vorteile
- Unabhängigkeit
- Änderungen können von den Benutzern abgeschirmt werden
- Vereinfachung
- Sicherheit
- Bestimmte Daten können für bestimmte benutzerklassen verborgen werden
Views
Eine View ist eine vituelle Tabelle basierend auf Tabellen oder anderen Views. Daten werden zur Asuführungszeit hergeleitet.
create view angpublic (persnr, name) as select persnr, name from angestellter;
select * from angpublic order by name;
drop view angpublic
Updateable views
eine View ist automatisch updatable wenn:
- nur eine Tabelle oder updatable view in FROM Klausel
- keine with, distinct, group by, having, limit, offset
- keine set operations (union, intersect, except)
- alles einfach refernzierte Kollonen, Keine Expressions, literale oder funktionen
- keine Kollone kann mehrfach vorkommen
- die view darf nicht die security_barrier Einstellung haben
Temporäre Tabellen
Werden am Ende eine Session oder transaction gelöscht.
create temporary table mytable (...);
drop table mytable;
ACID
A = Atomicity (Eine transaktion wird entweder vollständig oder gar nicht ausgeführt)
C = Consistency (Eine Transaktion führt die Daten von einem konstistenten Zustand in einen anderen über)
I = Isolation (Eine Transaktion soll so ausgeführt werden, als sei sie von anderen isoliert)
D = Durability (Alle Änderungen einer Transaktion sind persistent und gehen nicht durch Fehler verloren)
Nutzen von ACID
- Concurrency
- Geschwindigkeit
- Korrekte Isolation der Transaktion
- Fault Tolerance
- Atomarität (Mögliche Wiederholung einer fehlgeschlagenen transaktion)
- Dauerhaftigkeit nach erfolgreichem Commit (z.b mittels Write-Ahead Log)
SQL Transaction
BEGIN;
...
COMMIT;
Transaction Rollback
BEGIN;
...
ROLLBACK;
Transactions Savepoints
SAVEPOINT SP1;
...
ROLLBACK TO SP1;
RELEASE [SAVEPOINT] SP1;
Transaktionsausführung
Serielle Ausführung
Nebenläufige Ausführung
Serialisierbarkeit Vorgehen
- Operationen bestimmen (lesen, schreiben)
- Schedule der Transaktionen erstellen
- Konflikte zwischen Operationen bestimmen (Konfliktpaare)
- Serialisierbarkeitsgraph erstellen und prüfen
MVCC
Multi Version Concurrency Control
MVCC Verhalten
Schreiber blockieren keine Leser, Leser blockieren keine Schreiber
Schreiber blockieren andere Schreiber, welche dasselbe Tupel modifizieren wollen
MVCC Verfahren
Beim Update werden Tupels mit x-Locks versehen --> Deadlocks möglich
Beim Lesen werden keine Locks gesetzt
Jeder Update führt zu einer neueren Version des Tupels
MVCC Read Committed
ein Statement liest nur Daten mit derselben Version
MVCC Repeatable Read oder Serializable
die ganze Transaktion liest nur Daten mit derselben Version
MVCC Read Uncommitted
Wird nicht unterstützt
Transaktionsmanager
koordiniert die von den Applikationen gestarteten Transaktionen
Scheduler
ist für parallelität von Transaktionen zuständig
Recovery Manager
ist bei Fehlern welche zum Abbruch der transaktion zuständig dafür, dass die Daten in einem konsistenten zustand sind. Führt ein Log File
Puffer Manager
ist zuständig für interne DB Puffer und stellt mit Storage Manager Transfer von Daten zwischen Haupt und Sek. Speicher sicher
Pufferverwaltung
transaktionen schreiben Änderungen in DBMS Puffer. Hintergrundprozess in Sekundärspeicher
Languages
1. Data Definition Language (DDL) - CREATE, ALTER, DROP, TRUNCATE, COMMENT, …
2. Data Manipulation Language (DML) - SELECT, INSERT, UPDATE, DELETE
3. Date Control Language (DCL) - GRANT, REVOKE
4. Transaction Control Language (TCL) - COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION
Was passiert bei einem Deadlock?
Transaktionen sperren sich gegenseitig aus
T1= W1(x)W1(y)
T2=W2(y)W2(x)
Welche Möglichkeiten besitzt man einen Deadlock zu beheben?
Timeout - Nach einer bestimmten Wartezeit brechen die Transaktionen ab
Deadlock Erkennung - Abbruch einzelner Transaktionen (Opfer) bei Deadlock