Vorlesung Informationssysteme



Ähnliche Dokumente
1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Tag 4 Inhaltsverzeichnis

SQL: statische Integrität

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Tag 4 Inhaltsverzeichnis

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

SQL. Fortgeschrittene Konzepte Auszug

Datenbanken: Datenintegrität.

Transaktionsverwaltung

Transaktionen Recovery Isolationslevel. Datenbanksysteme. Transaktionen. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Hochschule Karlsruhe Technik und Wirtschaft

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Transaktionsverwaltung

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Übungen zur Vorlesung. Datenbanken I

desk.modul : WaWi- Export

Datenbanken: Transaktionskonzept und Concurrency Control

Literatur und Quellen. Datenbanken. Inhalt. Inhalt. Transaktionen. Nikolaus Augsten. Wintersemester 2013/14

Transaktionen in der Praxis. Dr. Karsten Tolle

Referenzielle Integrität SQL

PostgreSQL unter Debian Linux

SQL structured query language

Informations- und Wissensmanagement

7. Übung - Datenbanken

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Referentielle Integrität

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Referentielle Integrität

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Datenbanken (Bachelor) (SPO2007) WS 2011/12

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Software-Engineering Einführung

Software-Engineering und Datenbanken

Vorlesung Dokumentation und Datenbanken Klausur

6. Datenintegrität. Integritätsbedingungen

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Ein Ausflug zu ACCESS

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kapitel 2 Transaktionsverwaltung

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

P.A. Bernstein, V. Hadzilacos, N. Goodman

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

IntelliRestore Seedload und Notfallwiederherstellung

Datenintegrität. Bisherige Integritätsbedingungen

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Beispiel 1: Filmdatenbank

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Views in SQL. 2 Anlegen und Verwenden von Views 2

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

KURZANLEITUNG CLOUD OBJECT STORAGE

Datenbanken Konsistenz und Mehrnutzerbetrieb III

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Transaktionen und Synchronisation konkurrierender Zugriffe

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

PostgreSQL im praktischen Einsatz. Stefan Schumacher

Artikel Schnittstelle über CSV

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

5.3 Datenänderung/-zugriff mit SQL (DML)

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenintegrität und Transaktionskonzept

Bibliografische Informationen digitalisiert durch

Bedienungsanleitung CAD-KAS Reklamationserfassung. Einen neuen Datensatz anlegen. Klicken Sie auf das + Symbol, um einen neuen Datensatz anzulegen.

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS Transaktionen & ACID. Dr. Christian Senger Transaktionen & ACID 1

Startseite, wenn Sie auf unseren Online-Shop gehen

Konstante Relationen

EINFACHES HAUSHALT- KASSABUCH

Durchführung der Datenübernahme nach Reisekosten 2011

Options- und Freitext-Modul Update-Anleitung

Informatik 12 Datenbanken SQL-Einführung

SEMINAR Modifikation für die Nutzung des Community Builders

Speichern. Speichern unter

Datenbanksysteme. Transaktionen. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Internet Explorer Version 6

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Oracle: Abstrakte Datentypen:

Bedienungsanleitung für den Online-Shop

OUTLOOK-DATEN SICHERN

Einkaufslisten verwalten. Tipps & Tricks

Professionelle Seminare im Bereich MS-Office

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Verwendung des IDS Backup Systems unter Windows 2000

Darunter versteht man die Anmeldung eines Benutzers beim System unter Angabe einer Benutzererkennung.

3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien

Kommunikations-Management

Quick-Guide Web Shop. Kurzanleitung für die Benutzer des Bernd Kraft Webshops

-Inhalte an cobra übergeben

Software Engineering Klassendiagramme Assoziationen

Transkript:

Saarbrücken, 25.06.2015 Information Systems Group Vorlesung Informationssysteme Vertiefung Kapitel 8: Transaktionen und wann sie gebraucht werden Erik Buchmann (buchmann@cs.uni-saarland.de) Foto: M. Strauch

Aus den Videos wissen Sie......dass es Transaktionen gibt, und wozu sie gut sind ACID-Prinzip dass man Transaktionen tunen kann Je nach Anwendung Verzicht auf manche Features Vertiefung heute: Transaktionale Features in Postgres Bulk-Insert: Wie man Transaktionen und Sicherheitsfeatures richtig nutzt := Postgres-spezifisch, d.h., kein Standard-SQL 2 InfoSys - Transaktionen

Foto: M. Strauch Transaktionen in Postgres

Motivation 1) Sie haben eine Datenbank erstellt 2) Sie haben ein ordentliches, normalisiertes Datenbankschema 3) Sie starten den Import von 1 TB Daten mit 500.000.000 Zeilen Nach zwei Tagen brechen Sie ab. Jetzt ist der richtige Zeitpunkt, sich darüber Gedanken zu machen, welche der vielen Features eines DBMS Sie benötigen ;-) 4 InfoSys - Transaktionen

ACID Aus den Video-Vorlesungen A: Atomicity Transaktionen werden entweder ganz oder gar nicht durchgeführt C: Consistency Constraints sorgen dafür, dass DB nach jeder Transaktion konsistent ist Primary Key, Foreign Keys, Unique, CHECK-Constraints etc. I: Isolation Nur Daten aus abgeschlossenen Transaktionen für andere sichtbar Ergebnis paralleler Transaktionen entspricht serieller Ausführung D: Durability Logging, Recovery etc. sorgt dafür, dass abgeschlossene Transaktionen dauerhaft auf der Festplatte gespeichert sind dies trotz Festplattencache, Betriebssystemcache, Deferred-Write-Strategien... 5 InfoSys - Transaktionen

Atomicity Transaktionen entweder ganz oder gar nicht durchführen Standardverhalten der SQL-Konsole psql, pgadmin: Autocommit jedes einzelne SQL-Statement eigene Transaktion nach Abschluss der Ausführung eines Statements ist Transaktion abgeschlossen Mit Autocommit zwei verschiedene Transaktionen INSERT INTO kauft VALUES ('Erik', 'Mausfutter'); INSERT INTO forderungen_aus_lieferungen VALUES ('Erik', '12,78'); Beide INSERTs können unabhängig voneinander fehlschlagen Offene Forderung an Kunden ohne Einkauf? Einkauf ohne zugehörige Forderung an Kunden? 6 InfoSys - Transaktionen

Wenn Autocommit unerwünscht ist Entweder abschalten in psql \set AUTOCOMMIT off Oder Transaktionen explizit beginnen und beenden eine Transaktion: BEGIN TRANSACTION; INSERT INTO kauft VALUES ('Erik', 'Mausfutter'); INSERT INTO forderungen_aus_lieferungen VALUES ('Erik', '12,78'); COMMIT; Transaktionen abschließen COMMIT; ROLLBACK; Transaktion erfolgreich beenden Transaktion abbrechen, Ursprungszustand wiederherstellen Wenn ein SQL-Statement in einer Transaktion fehlschlägt, erzwingt DBMS ein ROLLBACK für alle SQL-Statements 7 InfoSys - Transaktionen

Consistency (Integritätssicherung) DBMS stelt sicher, dass Daten konsistent sind ROLLBACK beim Eintragen ungültiger Daten Relationenschema + lokale Integritätsbedingungen Bestellung in Bestellung und Artikel in Artikel taucht nur einmal auf Menge in Warenkorb und Preis in Artikel ist >0 Datenbankschema + globale Integritätsbedingungen zu jeder Bestellung in Bestellung ein/mehrere Einträge in Warenkorb zu jeder Bestellung in Warenkorb existiert exakt ein Eintrag in Bestellung Bestellung Warenkorb Artikel Kunde Bestellung Datum Bestellung Artikel Menge Artikel Preis Erik 001 15.03. Jens 002 03.04. Jens 003 06.04. Jens 004 10.04. Erik 005 20.04. 001 Trocken 2 001 Naß 2 002 Naß 10 003 Trocken 5 003 Rennmaus 3 Trocken 5,76 Naß 6,23 Rennmaus 16,99 8 InfoSys - Einführung

Beispiel: Überkreuzbeziehung Wie Daten einfügen? CREATE TABLE kunden( id int NOT NULL, name varchar(200) NOT NULL, prim_adr int NOT NULL, PRIMARY KEY (id) ); CREATE TABLE adressen( id int NOT NULL, kunde_id int NOT NULL, strasse varchar(200), plz int, ort varchar(200), PRIMARY KEY (id), FOREIGN KEY (kunde_id) REFERENCES kunden(id); ); ALTER TABLE kunden ADD CONSTRAINT fk_adr FOREIGN KEY (prim_adr) REFERENCES adressen (id); 9 InfoSys - Einführung

Der Zeitpunkt macht den Unterschied Standard: Constraints werden bei SQL-Ausführung sofort geprüft Beim Einfügen in kunden: BEGIN TRANSACTION; INSERT INTO kunden VALUES (1, 'Testkunde', 1); FEHLER: Einfügen oder Aktualisieren in Tabelle kunden verletzt Fremdschlüssel-Constraint fk_adr DETAIL: Schlüssel (prim_adr)=(1) ist nicht in Tabelle adressen vorhanden. Transaktion wird sofort abgebrochen, ROLLBACK Hier wünschenswertes Verhalten Prüfung der referentiellen Integrität am Ende der Transaktion 10 InfoSys - Einführung

Zeitpunkt der Prüfung in SQL Setzen des Zeitpunkts der Constraint-Prüfung mit CREATE ( TABLE CONSTRAINT TRIGGER ) column REFERENCES reftable (refcolumn) [ DEFERRABLE NOT DEFERRABLE ] [ INITIALLY DEFERRED INITIALLY IMMEDIATE ] ALTER ( CONSTRAINT TRIGGER ) constraint_name [ DEFERRABLE NOT DEFERRABLE ] [ INITIALLY DEFERRED INITIALLY IMMEDIATE ] Drei Möglichkeiten Prüfung immer sofort, Anwender darf nicht eingreifen: NOT DEFERRABLE Prüfung sofort, darf aber pro Transaktion verzögert werden: DEFERRABLE INITIALLY IMMEDIATE Prüfung immer am Ende der Transaktion, darf aber vorgezogen werden: DEFERRABLE INITIALLY DEFERRED 11 InfoSys - Einführung

Beispiele NOT DEFERRABLE ALTER TABLE kunden ADD CONSTRAINT u_name UNIQUE (name) NOT DEFERRABLE; DEFERRABLE INITIALLY IMMEDIATE ALTER TABLE adressen ADD CONSTRAINT fk_knd FOREIGN KEY (kunde_id) REFERENCES kunden (id) DEFERRABLE INITIALLY IMMEDIATE; verzögern innerhalb einer Transaktion mit SET CONSTRAINTS fk_knd DEFERRED; DEFERRABLE INITIALLY DEFERRED ALTER TABLE kunden ADD CONSTRAINT fk_adr FOREIGN KEY (prim_adr) REFERENCES adressen (id) DEFERRABLE INITIALLY DEFERRED; sofort prüfen innerhalb einer Transaktion mit SET CONSTRAINTS fk_knd IMMEDIATE; 12 InfoSys - Einführung

Isolation (1/2) Synchronisationskomponente stellt sicher, dass sich parallele Transaktionen nicht beeinflussen, sonst: Dirty Reads Daten nicht abgeschlossener Transaktionen werden von anderen gesehen Lost Updates Zwei Transaktionen ändern den selben Datensatz, nur Ergebnisse der letzten Transaktion sichtbar Alice Bob Alice Bob BEGIN TA. X := 10 schreibe X BEGIN TA. lese X X := X * 5 BEGIN TA. lese X BEGIN TA. lese X X := X-10 schreibe X ROLLBACK schreibe X X := X+1 schreibe X 13 InfoSys - Einführung

Isolation (2/2) Non-Repeatable Read Wiederholte Lesevorgänge innerhalb einer Transaktion liefern unterschiedliche Ergebnisse Phantom Read Lese-Schreib-Vorgänge paralleler Transaktionen beeinflussen sich gegenseitig Alice Bob Alice Bob BEGIN TA. schreibe X COMMIT BEGIN TA. schreibe Y COMMIT BEGIN TA. schreibe Z COMMIT BEGIN TA. zähle Datenobjekte zähle Datenobjekte BEGIN TA. BEGIN TA. lese X lese Y Y := X + 1 X := Y+1 schreibe Y schreibe X 14 InfoSys - Einführung

Die vier Isolation Levels von SQL (1/3) Read Uncommitted keinerlei Isolation, Anfragen sehen alles was derzeit in der DB passiert z.b. für: Single-User-Szenarien, Read-Only Anwendungen nicht von Postgres unterstützt Read Committed (Default-Einstellung in Postgres) Anfragen sehen alles, was andere Transaktionen committed haben Zeit Alice Bob BEGIN TRANSACTION; BEGIN TRANSACTION; INSERT INTO x VALUES (...); SELECT count(*) FROM x; (...) COMMIT; SELECT count(*) FROM x; COMMIT; Unterschiedliche Ergebnisse! 15 InfoSys - Einführung

Die vier Isolation Levels von SQL (2/3) Repeatable Read Anfragen sehen nur Daten, die zu Beginn der Transaktion gültig waren Zeit Alice Bob BEGIN TRANSACTION; BEGIN TRANSACTION; INSERT INTO x VALUES (...); SELECT count(*) FROM x; (...) COMMIT; SELECT count(*) FROM x; COMMIT; Gleiche Ergebnisse! Updates aus untersch. Transaktionen dürfen sich nicht überschreiben Transaktionen können wegen anderer Transaktionen fehlschlagen ERROR: could not serialize access due to concurrent update Anwendung muss abgebrochene Transaktionen wiederholen können Neues BEGIN TRANSACTION, neuer Datenbankzustand 16 InfoSys - Einführung

Die vier Isolation Levels von SQL (3/3) Serializable Anfrageausführung entspricht einer strikt seriellen Abarbeitung Auch Anfragen mit nachfolgenden Schreiboperationen berücksichtigt Alice Bob Zeit BEGIN TRANSACTION; BEGIN TRANSACTION; SELECT sum(i) FROM x WHERE t<5; SELECT sum(i) FROM x WHERE t>5;... berechne q = sum(i)*5 berechne q = sum(i)-50... INSERT INTO x(t, i) VALUES (10,q); INSERT INTO x(t, i) VALUES (1,q); COMMIT; COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions Keine gültige serielle Ausführung bei gleichzeitigem Start beider Transaktionen. ROLLBACK für eine TA 17 InfoSys - Einführung

Setzen des Isolation Levels Als Vorgabe für die Datenbank ALTER DATABASE db_name SET default_transaction_isolation = ("read uncommitted" "read committed" "repeatable read" "serializable") Z.B. ALTER DATABASE webshop SET default_transaction_isolation = 'read committed'; Pro Transaktion BEGIN TRANSACTION ISOLATION LEVEL ( SERIALIZABLE REPEATABLE READ READ COMMITTED READ UNCOMMITTED )... Lost Updates Dirty Read Non-Repeatable Read Phantom Read Read Uncommitted möglich möglich möglich möglich Read Committed nein nein möglich möglich Repeatable Read nein nein nein möglich Serializable nein nein nein nein Hinweis: Postgres wechselt bei Read Uncommitted immer zu Read Committed! 18 InfoSys - Einführung

Foto: M. Strauch Bulk-Insert

Worum geht es? Effizientes Einfügen großer Datenmengen z.b. aus einer anderen DB oder einem Backup Sie haben detailliertes Wissen über diese Daten 1) Alle Daten haben identisches Schema 2) Referentielle Integrität gegeben (Fremdschlüsselbeziehungen) 3) Konsistenz gegeben (Unique-Attribute, Primärschlüssel, CHECK...) Sie haben detailliertes Wissen über den Vorgang 1) Sie sind beim Bulk-Insert der einzige Nutzer der DB 2) Sie können bei einem Systemabsturz problemlos von vorn anfangen Sie benötigen die allermeisten DBMS-Features nicht 20 InfoSys - Transaktionen

1.: Einzeltransaktionen vermeiden Autocommit abschalten Oder: Transaktion explizit starten BEGIN TRANSACTION; COMMIT; Warum sind Einzeltransaktionen langsamer? 21 InfoSys - Transaktionen

2. Keine Constraint-Prüfungen beim Einfügen Alle Constraints entfernen, danach wieder anlegen wirklich alle, also PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE... ALTER TABLE x DROP CONSTRAINT c1, c2, cn; ALTER TABLE x ADD CONSTRAINT (...) PRIMARY KEY ( ) ALTER TABLE x ADD CONSTRAINT (...) FOREIGN KEY ( ) NOT VALID; ALTER TABLE x ADD CONSTRAINT (...) CHECK ( ) NOT VALID;... NOT VALID sorgt dafür, dass keine Constraint-Prüfung der eben angelegten Daten stattfindet NOT VALID derzeit nur für CHECK und FOREIGN KEY-Constraints Warum sind gesammelte Constraint-Prüfungen am Ende schneller? 22 InfoSys - Transaktionen

3. Entferne alles, was zusätzlichen Overhead verursacht Indexe entfernen, später wieder anlegen DROP INDEX i1, i2,...; CREATE INDEX i1...; Trigger auf ON INSERT deaktivieren, später wieder aktivieren ALTER TABLE x DISABLE TRIGGER ALL;... ALTER TABLE x ENABLE TRIGGER ALL; Rules auf ON INSERT deaktivieren, später wieder aktivieren ALTER TABLE x DISABLE RULE r1, r2, r3...;... ALTER TABLE x ENABLE RULE r1, r2, r3...; 23 InfoSys - Transaktionen

4. Nutze SQL-Erweiterungen und Systemtools Nutze COPY anstelle von INSERT INTO verkürztes Datenformat, Postgres-eigene SQL-Erweiterung INSERT INTO x VALUES (4, 'Erik'); INSERT INTO x VALUES (2, 'Erik'); INSERT INTO x VALUES (6, 'Jens'); COPY x (value, name) FROM stdin; 4 Erik 2 Erik 6 Jens \. Spezielle Bulkload-Tools pg_bulkload Diagramm: Einfügen von 4 GB Daten auf Maschine mit 2 CPUs und 24 Cores 24 InfoSys - Transaktionen

Foto: M. Strauch Zum Abschluss

Wie geht es weiter? bis Montag, 29.06., 12 Uhr Quiz: Trigger, JDBC, etc. Dienstag, 30.06., GHH 12-14 Uhr: Tutoriumstermin kurze Besprechung von Aufgabenblatt 8 nächstes Aufgabenblatt: Schemadefinitionen in SQL Donnerstag, 02.07.: Präsenztermin Relationale DBMS als Objektspeicher 26 InfoSys - Transaktionen