close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

1. Was versteht man unter einem Tablespace? Wie - Roggeweck.net

EinbettenHerunterladen
1. Was versteht man unter einem Tablespace? Wie sieht die Kardinalität der
Assoziation „Tabelle in Tablespace“ aus? Was ist zu tun, wenn ein (nicht
selbstorganisierender) Tablespace voll ist?
Ein Tablespace ist eine physische Einheit in der Datenbank, der für die Ablage
von Datenbankobjekten verwendet wird. Ein Tablespace besteht aus einem
oder mehreren Dateien (bzw. raw devices).
Die Kardinalität der Assoziation „Tabelle in Tablespace“ ist n:m, häufig aber
n:1.
Wenn ein Tablespace voll ist, sollte der DBA eine neue Datei hinzufügen.
2. Unter welcher Voraussetzung ist der Indexzugriff auf Daten in einer großen
Tabelle wesentlich effizienter als der sequentielle Zugriff?
Kleine Ergebnismenge
Größere Ergebnismenge, Cluster Index bzw. Index Only
Sortierter Zugriff, der durch den Index unterstützt wird
3. Gehen Sie von einer Kundentabelle mit Primärschlüssel Kundennummer mit
100000 Einträgen aus, einer Auftragstabelle mit Primärschlüssel
Auftragsnummer und Fremdschlüssel Kundennummer mit 100 Millionen
Einträge (in etwa gleichverteilt über die Kunden) und einer Tabelle mit
Auftragspositionen mit Primärschlüssel (Auftragsnummer, Positionsnummer)
und Fremdschlüssel Auftragsnummer, wobei es ca. 100 Positionen pro
Auftrag gibt.
Welches physische Datenbankdesign schlagen Sie vor, wenn häufig lesend
auf einzelne Aufträge zugegriffen werden soll (Auftragskopf- und zugehörige
Kundeninformationen und sowie Details zu allen Auftragspositionen sortiert
nach Positionsnummer) und (neben Auftragskopf- und Kundeninformation) auf
das Auftragsvolumen (Summe Menge*Einzelpreis über alle Auftragspositionen) für alle Aufträge zu einem Kunden, wobei die Daten in diesem Fall
sortiert nach Auftragsnummer ausgegeben werden sollen. Bei den
schreibenden Zugriffen auf Auftragspositionen sind Inserts deutlich in der
Überzahl.
Für den Zugriff auf die Daten zu einem Auftrag sind folgende Indexe
vorteilhaft:
Index auf Kundennummer in Kundentabelle (Primary Key!)
Index auf Auftragsnummer in Auftragstabelle (Primary Key!)
Index auf (Auftragsnummer, Positionsnummer) in der Tabelle der
Auftragspositionen (Primary Key!). Da man ca. 100 Auftragspositionen pro
Auftrag hat, ist der Zugriff über den nicht geclusterten Index okay.
Für den Zugriff auf die Auftragsdaten zu einem Kunden sind folgende Indexe
vorteilhaft:
Index auf Kundennummer in Kundentabelle (Primary Key!)
Index auf (Kundennummer, Auftragsnummer) in Auftragstabelle zur
Unterstützung der Restriktion auf Kundennummer und der Sortierung nach
Auftragsnummer. Da man ca. 1000 Aufträge pro Kunde hat, ist der Zugriff
über den nicht geclusterten Index okay.
Nicht geclusterter Index auf (Auftragsnummer, Positionsnummer) in der
Tabelle der Auftragspositionen (Primary Key!) ist problematisch, denn es geht
insgesamt um ca. 100000 Auftragspositionen!
Alternativen:
- Clustered Index
- Aufnahme von Menge und Einzelpreis in den Index, um index only
Zugriff zu erreichen
- Auftragsvolumen redundant in der Auftragstabelle speichern, was
aufgrund der Charakteristik der schreibenden Zugriffe auf die
Tabelle der Auftragspositionen okay ist
4. Diskutieren Sie Vor- und Nachteile der Verwendung von prepared statements
(prepare/execute) gegenüber der Ausführung von SQL Statements mit
„execute immediate“. Wie sind diese Statement Typen in JDBC implementiert?
Der Vorteil von prepared Statements besteht darin, dass die Erstellung des
Plans zur Ausführung des Statements (Parsen und Optimieren) nur erfolgt,
wenn dies notwendig ist, und der Plan wiederverwendet wird.
Dieser Vorteil ist nicht gegeben, wenn das Statement nur selten ausgeführt
wird, und wird sogar zum Nachteil, wenn die optimale Strategie zur
Ausführung des Statements parameterabhängig ist und der erstellte Plan im
allgemeinen nicht optimal ist.
In JDBC gibt es die Interfaces Statement mit den Methoden executeUpdate
und executeQuery für „execute immediate“ und PreparedStatement mit den
Methoden executeUpdate, executeQuery und execute für „prepare/execute“.
5. Beschreiben Sie das Vorgehen in JDBC Applikationen zur Verarbeitung von
Datenbank Sessions (Connections), Transaktionen und Statements.
Connection Interface beinhaltet Methoden zum
Connection öffnen
Connection schließen
Transaktionen werden über das Connection Interface behandelt:
Autocommit Modus setzen
Transaktionen mit Commit bzw. Rollback beenden
Connection Interface bietet Methoden zum Erzeugen von Statements
(Execute Immediate) und PreparedStatements (Prepare/Execute).
Beide Interface bietet Methoden zum Ausführen von Anweisungen:
ExecuteUpdate
ExecuteQuery
6. Erläutern Sie den Begriff ACID für Transaktionen.
A – atomic: Eine Transaktion wird entweder ganz ausgeführt oder gar nicht
(rollback).
C – consistency preserving: Sind die betroffenen Daten in der Datenbank vor
einer Transaktion in einem konsistenten Zustand, so sind sie es auch nach der
Transaktion, vorausgesetzt, die Transaktion selbst ist korrekt.
I – isolated: Während einer Transaktion werden die betroffenen Daten so
verarbeitet, als ob es keine konkurrierenden Zugriffe gäbe.
D – durable: Die Änderungen in einer Transaktion, die vom
Datenbankmanagementsystem bestätigt wurde, sind in der Datenbank
festgeschrieben und stehen allen zur Verfügung.
7. Welche Rolle spielt der letzte Checkpoint vor dem Crash bei einer
notwendigen Fast Recovery?
Dieser Checkpoint dient als Aufsetzpunkt bei der Fast Recovery. Zunächst
wird im Transaction Log rückwärts bis zum letzten Checkpoint gelesen, um
festzustellen, welche Transaktionen seit dem letzten Checkpoint bestätigt
wurden und welche offenen Transaktionen seit dem letzten Checkpoint
gestartet wurden. Zusammen mit der Liste der offenen Transaktion, die bei
diesem Checkpoint festgehalten wurden, kennt man jetzt alle Transaktionen,
die nicht bestätigt wurden. Anschließend werden (vorwärts im Transaction
Log) alle bestätigten Transactionen nachgefahren (redo) und dann (rückwärts
im Transaction Log) alle offenen Transaktionen zurückgerollt (undo), ggf. über
den letzten Checkpoint hinaus.
8. Skizzieren Sie die Isolation Level, die auf Transaktionsebene für den lesenden
Zugriff definiert werden können? Welches Isolation Level bietet sich an, wenn
parallel zu Read for Update - Transaktionen der parallele Read Only - Zugriff
auf die betroffenen Daten ermöglicht werden soll?
Read uncommitted: Sperren werden weder gesetzt noch beachtet.
Read committed: Lesesperren werden nicht gesetzt, Schreibsperren anderer
Transaktionen können jedoch beachtet werden.
Repeatable Read: Lesesperren werden gesetzt und bis zum
Transaktionsende gehalten, Sperren anderer Transaktionen werden beachtet.
Serializable: Durch geeignete Sperren wird sichergestellt, dass eine Abfrage,
die mehrfach in einer Transaktion abgesetzt wird, jeweils das gleiche Ergebnis
liefert.
9. Was sind die Vor- und Nachteile von synchroner und asynchroner
Replikation?
Synchrone Replikation hat den Vorteil, dass Primär- und Sekundärsystem
nicht auseinanderlaufen, aber den Nachteil, dass ein Ausfall des
Sekundärsystems bzw. der Verbindung zum Sekundärsystem das Arbeiten mit
dem Primärsystem unmöglich macht.
Document
Kategorie
Technik
Seitenansichten
9
Dateigröße
13 KB
Tags
1/--Seiten
melden