Lernpfad
Machst du dich für ein DBMS-Vorstellungsgespräch bereit? Du bist hier genau richtig.
Du kennst Datenbanken aus deinem Arbeitsalltag, aber in Vorstellungsgesprächen wirst du anders getestet als in echten Situationen. Die Interviewer wollen nicht nur wissen, ob du SQL-Abfragen schreiben kannst – sie checken auch, ob du Normalisierung und ACID-Eigenschaften verstehst und wie du mit Datenbank-Performance-Problemen umgehst, wenn es stressig wird. Viele Datenbankprofis haben Probleme, weil sie Konzepte, die sie jeden Tag benutzen, nicht erklären können oder mit Fragen zu ihrem Verhalten im Umgang mit Datenteams nicht klarkommen.
Dieser Leitfaden deckt die häufigsten DBMS-Interviewfragen aller Schwierigkeitsgrade ab. Du bekommst auch bewährte Strategien, um szenariobasierte Fragen zu meistern, und Tipps, die dir helfen, dich von anderen Bewerbern abzuheben.
Fangen wir mit den grundlegenden Fragen an, mit denen jedes DBMS-Vorstellungsgespräch startet.
Willst du dich beim Vorstellungsgespräch nur auf den Teil zum Programmieren konzentrieren? Hier sind 85 SQL-Interviewfragen und Antworten für 2026.
Grundlegende Fragen zum DBMS-Interview
Rechne damit, dass dir diese Fragen zu Beginn eines technischen Vorstellungsgesprächs gestellt werden. Sie prüfen dein grundlegendes Verständnis von Datenbankmanagementsystemen.
Die Interviewer nutzen diese Fragen, um zu sehen, ob du die wichtigsten Datenbankkonzepte verstehst, bevor sie zu komplexeren Szenarien übergehen. Die wollen klare Erklärungen und praktische Beispiele, die zeigen, dass du mit Datenbanken gearbeitet hast und nicht nur Definitionen auswendig gelernt hast.
Was ist ein Datenbankmanagementsystem (DBMS)?
Ein DBMS ist eine Software, die Datenbanken verwaltet – sie kümmert sich um das Speichern, Abrufen und Organisieren von Daten und sorgt dabei für Sicherheit und Konsistenz.
Stell dir das als Vermittler zwischen deinen Anwendungen und den eigentlichen Datendateien vor. Beliebte Beispiele sind MySQL, PostgreSQL, Oracle und SQL Server. Das DBMS kümmert sich um Sachen wie die Benutzerauthentifizierung und Datensicherung und sorgt dafür, dass mehrere Leute auf die Daten zugreifen können, ohne sie zu beschädigen.
Was ist der Unterschied zwischen einer Datenbank und einem DBMS?
Eine Datenbank ist die Sammlung von Daten an sich, während ein DBMS die Software ist, die diese Daten verwaltet.
Die Datenbank hat deine Tabellen, Datensätze und Beziehungen. Das DBMS hat die Tools und die Schnittstelle, um mit diesen Daten zu arbeiten. Es ist wie der Unterschied zwischen einer Bibliothek (Datenbank) und dem Bibliothekssystem (DBMS), das dir hilft, Bücher zu finden und auszuleihen.
Erkläre die ACID-Eigenschaften bei Datenbanktransaktionen.
Die ACID-Prinzipien sorgen dafür, dass Datenbanktransaktionen zuverlässig sind und die Datenintegrität erhalten bleibt:
- Atomicity-: Alle Vorgänge in einer Transaktion klappen oder gehen zusammen schief.
- Konsistenz: Die Daten bleiben nach den festgelegten Regeln gültig.
- Isolations: Parallele Transaktionen stören sich nicht gegenseitig.
- Haltbarkeits: Festgeschriebene Änderungen bleiben auch nach einem Systemabsturz erhalten.
Hier ist ein Beispiel aus dem Alltag: Wenn du Geld zwischen Bankkonten überweist, müssen sowohl die Belastung als auch die Gutschrift gleichzeitig passieren (Atomarität), die Regeln für den Gesamtsaldo bleiben gültig (Konsistenz), andere Transaktionen sehen keine Teilzustände (Isolation) und die Änderung bleibt auch bei einem Systemabsturz bestehen (Dauerhaftigkeit).
Welche verschiedenen Arten von Datenbankschlüsseln gibt es?
Datenbankschlüssel werden benutzt, um Datensätze eindeutig zu identifizieren und Beziehungen herzustellen. Hier sind die Typen, die du kennen solltest:
- Primärschlüssel: Identifiziert jede Zeile eindeutig (kann nicht null oder doppelt sein)
- Fremdschlüssel: Verweist auf einen Primärschlüssel in einer anderen Tabelle
- Kandidatenschlüssel: Jede Spalte, die als Primärschlüssel genutzt werden kann
- Zusammengesetzter Schlüssel: Primärschlüssel aus mehreren Spalten
- Eindeutiger Schlüssel: Sorgt dafür, dass alles einzigartig ist, lässt aber einen Nullwert zu.
Hier ist ein einfaches Beispiel:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
department_id INT,
email VARCHAR(100) UNIQUE,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
Was ist Normalisierung und warum ist sie gut?
Durch die Normalisierung wird Datenredundanz vermieden , indem sie die Daten in separate, miteinander verbundene Tabellen sortiert.
Es verhindert Dateninkonsistenzen und spart Speicherplatz. So funktionieren die wichtigsten Normalformen:
Erste Normalform (1NF): Jede Spalte hat einzelne Werte – keine Listen oder mehrere Werte in einer Zelle.
Schlechtes Beispiel:

Bild 1 – Schlechtes Beispiel für 1NF
Gutes Beispiel:

Bild 2 – Gutes Beispiel für 1NF
Zweite Normalform (2NF): Es muss in 1NF sein und teilweise Abhängigkeiten entfernen – Nicht-Schlüsselspalten müssen vom gesamten Primärschlüssel abhängen, nicht nur von einem Teil davon.
Das gilt, wenn du einen zusammengesetzten Primärschlüssel hast. Wenn du eine Tabelle mit (student_id, course_id) als Primärschlüssel hast, dann sollte student_name nicht in dieser Tabelle sein, weil es nur von student_id abhängt, nicht von beiden Schlüsseln.
Dritte Normalform (3NF): Es muss in 2NF sein und transitive Abhängigkeiten entfernen. Nicht-Schlüsselspalten sollten nicht von anderen Nicht-Schlüsselspalten abhängig sein.
Schlechtes Beispiel:

Bild 3 – Schlechtes Beispiel für 3NF
Hier hängt „ advisor_office “ von „ advisor_id “ ab, nicht direkt von „ student_id “. Teile das in separate Tabellen auf.
Ohne Normalisierung würdest du Kundendaten bei jeder Bestellung speichern, was Speicherplatz verschwendet und zu Problemen bei der Aktualisierung führt, wenn sich Kundendaten ändern.
Erkläre mal den Unterschied zwischen DELETE, DROP und TRUNCATE.
Diese Befehle löschen Daten auf verschiedene Arten:
- DELETE löscht bestimmte Zeilen und kann rückgängig gemacht werden:
DELETE FROM employees WHERE department_id = 5;
- TRUNCATE löscht alle Zeilen, behält aber die Struktur der Tabelle bei (schneller als DELETE):
TRUNCATE TABLE employees;
- DROP löscht die ganze Tabelle und ihre Struktur:
DROP TABLE employees;
Was ist der Unterschied zwischen INNER JOIN und OUTER JOIN?
INNER JOIN gibt nur die übereinstimmenden Datensätze aus beiden Tabellen zurück:
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;
OUTER JOIN nimmt auch nicht übereinstimmende Datensätze mit rein:
- LEFT JOIN: Alle Datensätze aus der linken Tabelle, die mit denen aus der rechten übereinstimmen
- RIGHT JOIN: Alle Datensätze aus der rechten Tabelle, die mit denen aus der linken übereinstimmen
- FULL OUTER JOIN: Alle Datensätze aus beiden Tabellen
SQL-Joins sind echt ein komplexes Thema – hier sind 20 Interviewfragen, die sich nur um Joins drehen.
Was ist ein Index und wie verbessert er die Performance?
Ein Index ist eine Art Datenstruktur, die das Finden von Daten schneller macht , indem er Abkürzungen zu Tabellenzeilen erstellt.
Stell dir das wie das Stichwortverzeichnis eines Buches vor – statt jede Seite durchzublättern, um ein Thema zu finden, schaust du einfach nach und springst direkt zur richtigen Seite. Indizes machen SELECT-Abfragen schneller, verlangsamen aber INSERT-, UPDATE- und DELETE-Operationen, weil der Index aktualisiert werden muss.
CREATE INDEX idx_employee_email ON employees(email);
Erkläre mal das Konzept einer Ansicht in Datenbanken.
Eine Ansicht ist eine virtuelle Tabelle , die aus einer SQL-Abfrage erstellt wird und selbst keine Daten speichert.
Ansichten machen komplexe Abfragen einfacher, sorgen für Sicherheit, indem sie sensible Spalten verstecken, und zeigen Daten in verschiedenen Formaten an. Wenn du eine Ansicht abfragst, führt die Datenbank die zugrunde liegende SQL aus und gibt die Ergebnisse zurück, als wäre es eine echte Tabelle.
CREATE VIEW active_employees AS
SELECT employee_id, name, email
FROM employees
WHERE status = 'active';
SELECT * FROM active_employees;
Was sind gespeicherte Prozeduren und was sind ihre Vorteile?
Gespeicherte Prozeduren sind vorab kompilierter SQL-Code in der Datenbank gespeichert und können nach ihrem Namen ausgeführt werden.
Sie machen die Leistung besser, weil sie schon fertig programmiert sind, den Netzwerkverkehr reduzieren, indem sie mehrere Anweisungen in einem Aufruf ausführen, und durch parametrisierte Abfragen für mehr Sicherheit sorgen. Außerdem bringen sie die Geschäftslogik in der Datenbank zusammen.
CREATE PROCEDURE GetEmployeesByDepartment(IN dept_id INT)
BEGIN
SELECT * FROM employees WHERE department_id = dept_id;
END;
Prozedurales SQL kann je nach Job ein wichtiges Thema im Vorstellungsgespräch sein. Diese 20 Interviewfragen drehen sich um Oracle PL/SQL.
Nachdem wir das geklärt haben, lass uns zu den mittleren Fragen kommen, die dein Wissen auf die Probe stellen.
SQL Upskilling für Einsteiger
Fragen für Vorstellungsgespräche zum Thema DBMS für Fortgeschrittene
Diese Fragen prüfen deine technischen Kenntnisse über DBMS-Tools und -Konzepte.
Die Interviewer stellen dir Fragen, um zu sehen, ob du Datenbankwissen anwenden kannst, um echte Probleme zu lösen. Sie suchen Leute mit praktischer Erfahrung in der Abfrageoptimierung und dem Verständnis, wie Datenbanken im Hintergrund funktionieren.
Erkläre die verschiedenen Arten von Indizes und wann man sie benutzt.
- Clustered-Indizes sortieren die Tabelle physisch nach den Schlüsselwerten neu – pro Tabelle kann es nur einen geben, weil die Daten nur in einer Richtung sortiert werden können.
- Nicht gruppierte Indizes machen eine eigene Struktur, die auf Tabellenzeilen zeigt, ohne die physische Reihenfolge zu ändern. Du kannst mehrere nicht gruppierte Indizes in einer Tabelle haben.
- Zusammengesetzte Indizes decken mehrere Spalten ab und funktionieren am besten, wenn Abfragen diese Spalten zusammen filtern.
- Eindeutige Indizes sorgen dafür, dass Daten einzigartig bleiben, und machen das Suchen schnell.
- Teilindizes indizieren nur Zeilen, die bestimmte Bedingungen erfüllen, und sparen so Speicherplatz.
Was ist der Unterschied zwischen einem gruppierten und einem nicht gruppierten Index?
- Clustered-Indizes bestimmen, wie die Daten in der Tabelle gespeichert werden – stell dir das wie ein Telefonbuch vor, das nach Nachnamen sortiert ist.
- Nicht gruppierte Indizes sind wie der Index am Ende eines Lehrbuchs – sie zeigen, wo die eigentlichen Daten zu finden sind, ohne die Reihenfolge der Seiten im Buch zu ändern.
So erstellst du gruppierte und nicht gruppierte Indizes:
-- Primary key creates clustered index by default
CREATE TABLE employees (
id INT PRIMARY KEY CLUSTERED,
name VARCHAR(100),
email VARCHAR(100)
);
-- Separate index for fast email lookups
CREATE NONCLUSTERED INDEX idx_email ON employees(email);
Eine Tabelle kann nur einen gruppierten Index haben, aber mehrere nicht gruppierte. Clustered-Indizes sind schneller bei Bereichsabfragen, während Non-Clustered-Indizes besser für exakte Übereinstimmungen in verschiedenen Spalten sind.
Wie optimiert man eine langsame Abfrage?
Schau dir erst mal den Ausführungsplan an, um zu sehen, wo der Engpass ist.
EXPLAIN SELECT * FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.order_date > '2025-07-01';
Hier sind ein paar gängige Optimierungstechniken:
- Füge Indizes für Spalten, die in WHERE-, JOIN- und ORDER BY-Klauseln benutzt werden
- Begrenze die Ergebnismenge mit WHERE-Klauseln vor dem Joining
- Benutze Covering-Indizes , die alle für die Abfrage benötigten Spalten haben.
- Schreib Unterabfragen als JOINs um, wenn das geht
- Vermeide SELECT *– hol nur die Spalten, die du brauchst
Schau mal im Ausführungsplan nach, ob Scans der Tabelle vorkommen – die sind meistens die größten Performance-Killer.
Was sind Datenbanktransaktionen und Isolationsstufen?
Datenbanktransaktionen fassen mehrere Vorgänge zu einer einzigen Einheit zusammen, die entweder komplett erfolgreich ist oder komplett fehlschlägt.
Isolationsstufen bestimmen, wie gleichzeitige Transaktionen die Änderungen der anderen sehen:
- UNCOMMITTED LESEN: Kann nicht festgeschriebene Änderungen lesen (Dirty Reads möglich)
- READ COMMITTED: Liest nur festgeschriebene Daten (Standard in den meisten Datenbanken)
- WIEDERHOLBARE LESE: Die gleiche Abfrage liefert innerhalb einer Transaktion die gleichen Ergebnisse.
- SERIALIZABLE: Höchste Isolation, Transaktionen laufen wie sequenziell ab
Höhere Isolationsstufen verhindern mehr Probleme, verringern aber die Parallelität und Leistung.
Erkläre das Konzept der Datenbankpartitionierung.
Beim Datenbank-Partitionieren werden große Tabellen in kleinere, übersichtlichere Teile aufgeteilt, bleiben aber logisch gesehen eine Tabelle. Es gibt vier Ansätze, die du kennen solltest.
- Horizontale Aufteilung teilt Zeilen nach Kriterien wie Datumsbereichen auf:
-- Orders table partitioned by year
CREATE TABLE orders_2023 (...);
CREATE TABLE orders_2024 (...);
CREATE TABLE orders_2025 (...);
- Vertikale Partitionierung teilt Spalten auf – oft genutzte Spalten in eine Partition, selten genutzte in eine andere.
- Hash-Partitionierung verteilt Zeilen anhand einer Hash-Funktion.
- Bereichsaufteilung nutzt Wertebereiche wie Datumsangaben oder IDs.
Die Vorteile sind schnellere Abfragen (nur relevante Partitionen werden abgefragt), einfachere Wartung und bessere Parallelisierung.
Was ist der Unterschied zwischen UNION und UNION ALL?
UNION kombiniert die Ergebnisse mehrerer Abfragen und entfernt Duplikate, während UNION ALL die Ergebnisse kombiniert, aber alle Zeilen behält, auch die Duplikate.
-- UNION removes duplicates (slower)
SELECT name FROM employees WHERE department = 'IT'
UNION
SELECT name FROM employees WHERE salary > 50000;
-- UNION ALL keeps duplicates (faster)
SELECT name FROM employees WHERE department = 'IT'
UNION ALL
SELECT name FROM employees WHERE salary > 50000;
Verwenden UNION ALL , wenn du weißt, dass es keine Duplikate gibt oder wenn Duplikate keine Rolle spielen – das geht viel schneller, weil der Schritt zum Entfernen von Duplikaten übersprungen wird.
Wie gehst du mit Deadlocks in einer Datenbank um?
Deadlocks passieren, wenn zwei Transaktionen darauf warten, dass die andere die Ressourcen freigibt, und so eine zirkuläre Abhängigkeit entsteht.
Die meisten Datenbanken erkennen Deadlocks automatisch und brechen eine Transaktion ab (die „Deadlock-Opfer“), damit die andere weiterlaufen kann. Die abgebrochene Transaktion wird rückgängig gemacht und es kommt zu einem Fehler.
-- Transaction 1
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- waits for lock on account 2
-- Transaction 2
BEGIN;
UPDATE accounts SET balance = balance + 50 WHERE id = 2;
-- tries to update account 1 -> DEADLOCK
Hier sind ein paar Tipps, um Deadlocks zu vermeiden:
- Greif auf Tabellen in derselben Reihenfolge über Transaktionen hinweg zu
- Mach die Transaktionen kurz
- Passende Isolationsstufen verwenden
- Implementiere eine Wiederholungslogik in deiner Anwendung.
Was ist der Sinn von Datenbankbeschränkungen?
Datenbankbeschränkungen sorgen dafür, dass Geschäftsregeln eingehalten werden und die Daten auf Datenbankebene sauber bleiben. Hier sind fünf Arten von Einschränkungen, die jeder Datenbankprofi kennen sollte:
- Primärschlüssel: Sorgt für eine eindeutige Identifizierung
- Fremdschlüssel: Hält die Referenzintegrität aufrecht
- Schau mal rein unter: Überprüft, ob die Daten bestimmte Bedingungen erfüllen
- Nicht null: Verhindert leere Werte
- Einzigartige Web: Sorgt dafür, dass es keine Duplikate gibt
So läuft das in der Praxis ab:
CREATE TABLE employees (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE NOT NULL,
age INT CHECK (age >= 18 AND age <= 65),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
Einschränkungen verhindern, dass fehlerhafte Daten in deine Datenbank gelangen, und erkennen Fehler frühzeitig, bevor sie sich in deiner Anwendung ausbreiten.
Erkläre Datenbankreplikation und ihre Arten.
Bei der Datenbankreplikation werden Daten von einer Datenbank in andere Datenbanken kopiert, um die Verfügbarkeit, Leistung und Notfallwiederherstellung zu verbessern.
Es gibt vier Arten der Replikation, die du kennen solltest:
- Master-Slave-Replikations: Ein Master kümmert sich ums Schreiben, mehrere Slaves fürs Lesen. Änderungen werden vom Master an die Slaves weitergegeben.
- Master-Master-Replikations: Mehrere Master können Schreib- und Lesevorgänge verarbeiten. Komplexer, aber es gibt keinen einzigen Fehlerpunkt mehr.
- Synchrone Replikation: Wartet auf Bestätigung von Replikaten, bevor es was festschreibt (langsamer, aber konsistenter).
- Asynchrone Replikation: Sofortige Übertragung, spätere Replikation (schneller, aber mit möglichem Datenverlust).
Was sind Datenbank-Trigger und wann solltest du sie benutzen?
Datenbank-Trigger sind spezielle Prozeduren, die automatisch bei Datenbankereignissen wie INSERT, UPDATE oder DELETE losgehen.
Hier ist ein einfaches Beispiel:
CREATE TRIGGER update_modified_date
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
SET NEW.modified_at = NOW();
END;
Trigger sind super praktisch, um Zeitstempel automatisch zu aktualisieren, Änderungen für Prüfpfade zu protokollieren, komplizierte Geschäftsregeln durchzusetzen oder berechnete Felder zu pflegen.
Aber Trigger können das Debuggen kompliziert machen, den Betrieb verlangsamen und versteckte Abhängigkeiten schaffen. Benutz sie sparsam und dokumentier sie gut.
Jetzt schauen wir uns mal die fortgeschrittenen DBMS-Interviewfragen an.
Fragen für Vorstellungsgespräche zu fortgeschrittenen DBMS
Diese Fragen testen dein fundiertes Wissen über DBMS-Architektur und komplexe Datenbankoperationen.
Die Interviewer stellen dir anspruchsvolle Fragen, um zu sehen, ob du in der Lage bist, große Datenbanksysteme zu entwerfen und Fehler zu beheben. Sie wollen sehen, ob du die Vor- und Nachteile der verschiedenen Ansätze verstehst und fundierte Entscheidungen über die Datenbankarchitektur treffen kannst.
Erkläre Datenbank-Sharding und seine Vor- und Nachteile.
Beim Datenbank-Sharding wird eine große Datenbank horizontal auf mehrere Server verteilt, wobei jeder Shard nur einen Teil der Daten enthält.
Du teilst die Daten anhand eines Shard-Schlüssels auf, zum Beispiel nach Benutzer-ID, geografischem Standort oder Datumsbereich. Jeder Shard läuft für sich, sodass du über die Kapazität eines einzelnen Servers hinaus skalieren kannst.
-- Example: Sharding users by ID ranges
-- Shard 1: user_id 1-1000000
-- Shard 2: user_id 1000001-2000000
-- Shard 3: user_id 2000001-3000000
Die Vorteile sind horizontale Skalierung, bessere Leistung und Fehlerisolierung (ein Shard-Ausfall legt nicht alles lahm).
Zu den Nachteilen gehören eine komplizierte Anwendungslogik, keine shardübergreifenden Transaktionen, schwieriges Rebalancing und der Verlust einiger ACID-Garantien über Shards hinweg. Abfragen, die mehrere Shards umfassen, werden teuer.
Was ist das CAP-Theorem und wie wirkt es sich auf das Datenbankdesign aus?
Das CAP-Theorem besagt, dass verteilte Systeme nur zwei von drei Eigenschaften garantieren können: Konsistenz, Verfügbarkeit und Partitionstoleranz:
- Konsistenz: Alle Knoten sehen die gleichen Daten zur gleichen Zeit.
- Verfügbarkeits: Das System läuft auch dann weiter, wenn Knoten ausfallen.
- Partitionstoleranz: Das System läuft weiter, auch wenn die Netzwerkverbindung zwischen den Knoten mal nicht klappt.
Da nur zwei von drei garantiert sind, hier die häufigsten Kombinationen:
- CA-Systeme (wie herkömmliche RDBMS) opfern die Partitionstoleranz – sie können Netzwerkunterbrechungen nicht gut bewältigen.
- CP-Systeme (wie MongoDB in bestimmten Konfigurationen) opfern die Verfügbarkeit – sie können Anfragen ablehnen, um die Konsistenz zu wahren.
- AP-Systeme (wie Cassandra) opfern Konsistenz – sie bleiben verfügbar, aber die Daten können vorübergehend über die Knoten hinweg inkonsistent sein.
Die meisten modernen verteilten Datenbanken sind letztendlich konsistent – sie legen Wert auf Verfügbarkeit und Partitionstoleranz und erreichen Konsistenz im Laufe der Zeit.
Wie entwirft man ein Datenbankschema für hohe Parallelität?
Fang damit an, die Sperrkonflikte zu reduzieren, indem du Tabellen so gestaltest, dass es weniger Probleme bei gleichzeitigen Vorgängen gibt.
Verwende optimistisches Locking mit Versionsspalten anstelle von pessimistischen Sperren:
-- Add version column for optimistic locking
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2),
inventory_count INT,
version INT DEFAULT 1
);
-- Update with version check
UPDATE products
SET inventory_count = inventory_count - 1, version = version + 1
WHERE id = 123 AND version = 5;
Weitere Tipps für das Design bei hoher Parallelität:
- Teile Hot Tables nach Zeit oder anderen logischen Grenzen
- Verwende separate Tabellen für unterschiedliche Zugriffsmuster statt breiten Tabellen mit gemischter Nutzung
- Vermeide breite Indizes , die zu Konflikten führen
- Entwerfen für Workloads, bei denen meistens Daten angehängt werden – Einfügen verursacht weniger Konflikte als Aktualisierungen
Erkläre MVCC (Multi-Version Concurrency Control)
MVCC lässt mehrere Transaktionen gleichzeitig auf dieselben Daten zugreifen, ohne sie zu sperren, indem es mehrere Versionen jeder Zeile speichert.
Wenn du eine Transaktion startest, bekommst du eine Momentaufnahme der Datenbank zu diesem Zeitpunkt. Andere Transaktionen können Daten ändern, aber deine Transaktion sieht nur die Version, die zu Beginn vorhanden war.
-- Transaction A starts at time T1
BEGIN; -- Sees version 1 of all data
-- Transaction B modifies data at time T2
UPDATE accounts SET balance = 1000 WHERE id = 1; -- Creates version 2
-- Transaction A still sees version 1
SELECT balance FROM accounts WHERE id = 1; -- Returns old value
COMMIT; -- Transaction A commits with its snapshot
Zu den Vorteilen gehört, dass Leser Autoren nicht blockieren, Autoren Leser nicht blockieren und dass die Lesevorgänge innerhalb von Transaktionen konsistent sind.
Zu den Nachteilen gehören der Speicheraufwand für mehrere Versionen und die Bereinigungsprozesse zum Entfernen alter Versionen.
Was sind materialisierte Ansichten und wann solltest du sie nutzen?
Materialisierte Ansichten speichern das Ergebnis einer Abfrage physisch auf der Festplatte, im Gegensatz zu normalen Ansichten, die die Abfrage jedes Mal neu ausführen.
Sie sind super für teure Aggregationen, die keine Echtzeitdaten brauchen:
-- Create materialized view for monthly sales summary
CREATE MATERIALIZED VIEW monthly_sales AS
SELECT
DATE_TRUNC('month', order_date) as month,
SUM(total_amount) as total_sales,
COUNT(*) as order_count
FROM orders
GROUP BY DATE_TRUNC('month', order_date);
-- Refresh when needed
REFRESH MATERIALIZED VIEW monthly_sales;
Die sind super für Dashboard-Abfragen, Berichte und komplexe Analysen, die immer wieder mit stabilen Daten laufen.
Zu den Nachteilen gehören zusätzlicher Speicherplatz, Wartungsaufwand und veraltete Daten zwischen den Aktualisierungen. Die funktionieren am besten, wenn du etwas veraltete Daten in Kauf nehmen kannst, um eine bessere Abfrageleistung zu kriegen.
Wie gehst du mit riesigen Datensätzen um, die nicht in den Arbeitsspeicher passen?
Entwerfen Sie für datenträgerbasierte Vorgänge, indem Sie verstehen, wie Ihre Datenbank auf Daten aus dem Speicher zugreift.
Partitionierung nutzen , damit Abfragen nur die relevanten Datensegmente anfassen:
-- Partition by date so queries can skip irrelevant partitions
CREATE TABLE sales_data (
sale_date DATE,
amount DECIMAL(10,2),
customer_id INT
) PARTITION BY RANGE (sale_date);
Weitere Tipps zum Umgang mit Datensätzen, die größer als der Arbeitsspeicher sind:
- Optimiere Indizes für Bereichsscans statt für den Direktzugriff
- Verwende die spaltenorientierte Speicherung für Analyse-Workloads, bei denen du bestimmte Spalten zusammenfasst
- Implementiere Caching und Paginierung für Suchergebnisse für Abfragen, die von Benutzern gemacht werden
- Verwende Lesereplikate , um die Abfrage-Last auf mehrere Maschinen zu verteilen
- Denk mal über Datenarchivierung nach - Alte Daten auf günstigere Speichermedien verschieben und nur aktuelle Daten in der Hauptdatenbank behalten
Erkläre mal den Unterschied zwischen pessimistischem und optimistischem Locking.
Pessimistische Sperren gehen davon aus, dass es zu Konflikten kommen wird, und sperren Ressourcen sofort, um das zu verhindern. Optimistische Sperren denken, dass Konflikte selten sind, und checken nur beim Festschreiben von Änderungen, ob es welche gibt.
-- Pessimistic: Lock the row immediately
BEGIN;
SELECT * FROM accounts WHERE id = 1 FOR UPDATE; -- Locks the row
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;
-- Optimistic: Check version before updating
SELECT id, balance, version FROM accounts WHERE id = 1;
-- Application logic happens here
UPDATE accounts
SET balance = balance - 100, version = version + 1
WHERE id = 1 AND version = 3; -- Fails if someone else updated it
- Pessimistisch funktioniert besser in Szenarien mit hoher Konkurrenz, wo Konflikte oft vorkommen.
- Optimistisch funktioniert besser bei leseintensiven Workloads, bei denen es selten zu Konflikten kommt.
Was ist Datenbankdenormalisierung und wann ist sie sinnvoll?
Durch Denormalisierung wird absichtlich Redundanz normalisierten Tabellen hinzugefügt, um die Abfrageleistung zu verbessern.
Du kopierst Daten über Tabellen hinweg, um teure Verknüpfungen zu vermeiden:
-- Normalized: Requires join for order details
SELECT o.id, c.name, c.email
FROM orders o
JOIN customers c ON o.customer_id = c.id;
-- Denormalized: Customer info stored in orders table
SELECT id, customer_name, customer_email
FROM orders_denormalized;
Wann sollte man denormalisieren?:
- Die Leseleistung ist wichtiger als die Schreibleistung.
- Du hast vorhersehbare Abfragemuster, bei denen es gut ist, Joins zu vermeiden.
- Speicherplatz ist billiger als Rechenzeit.
- Du kannst die Komplexität bewältigen, die mit der Synchronisierung denormalisierter Daten einhergeht.
Zu den Risiken gehören Dateninkonsistenz, höhere Speicherkosten und eine komplexere Aktualisierungslogik.
Wie planst du für Notfallwiederherstellung und hohe Verfügbarkeit?
Fang damit an, auf jeder Ebene Redundanz einzuplanen – mehrere Datenbankserver, Netzwerkpfade und Rechenzentren.
Richte die Replikation mit automatischem Failover ein:
- Primär: Kümmert sich um alle Schreibvorgänge
- Replik 1: Verarbeitet Leseabfragen in derselben Region
- Replik 2: Verarbeitet Leseabfragen in einer anderen Region
- Replik 3: Bereit für die Notfallwiederherstellung
Weitere Tipps:
- Mach regelmäßig Backups mit der Möglichkeit, zu einem bestimmten Zeitpunkt wiederherzustellen
- Teste regelmäßig die Ausweichverfahren – Ein Notfallplan, der im Ernstfall nicht funktioniert, ist nutzlos.
- Benutze Load Balancer , um den Datenverkehr von ausgefallenen Servern wegzuleiten.
- Behalte alles im Blick – du musst Probleme erkennen, bevor deine Nutzer sie bemerken
- Plan für verschiedene Ausfallszenarien – Ausfall eines einzelnen Servers, Ausfall des Rechenzentrums, regionale Katastrophen und Datenbeschädigung
Erkläre Datenbank-Connection-Pooling und warum es wichtig ist.
Connection Pooling speichert Datenbankverbindungen im Cache, die von Anwendungen wiederverwendet werden können, anstatt für jede Anfrage neue Verbindungen zu erstellen.
Datenbankverbindungen einzurichten ist aufwendig – es geht um Netzwerk-Handshakes, Authentifizierung und die Zuweisung von Ressourcen. Verbindungspools machen diesen Aufwand überflüssig.
Hier ist ein Beispiel in Python:
# Without pooling: Creates new connection each time
def get_user(user_id):
conn = create_connection() # Expensive!
result = conn.execute("SELECT * FROM users WHERE id = ?", user_id)
conn.close()
return result
# With pooling: Reuses existing connections
pool = ConnectionPool(max_connections=20)
def get_user(user_id):
conn = pool.get_connection() # Fast!
result = conn.execute("SELECT * FROM users WHERE id = ?", user_id)
pool.return_connection(conn)
return result
Zu den Vorteilen gehören schnellere Reaktionszeiten, weniger Belastung der Datenbank, kontrollierte Ressourcennutzung und besseres Management von Traffic-Spitzen.
Du solltest die Größe des Pools nach der Anzahl der gleichzeitigen Benutzer und der Datenbankkapazität ausrichten – zu klein führt zu Wartezeiten, zu groß verschwendet Ressourcen.
Verhaltens- und szenariobasierte DBMS-Fragen
Diese Fragen checken deine Fähigkeiten, Probleme zu lösen, und deine Erfahrung in der Zusammenarbeit mit Kunden und Datenteams.
Die Interviewer stellen dir Verhaltens- und Szenariofragen, um zu sehen, wie du mit echten Datenbankproblemen umgehst. Sie wollen wissen, wie du denkst, wie gut du kommunizieren kannst und ob du mit Leuten klarkommst, die nicht so viel Ahnung von Technik haben, wenn Probleme mit der Datenbank auftauchen.
Erzähl mir mal von einer Situation, in der du eine langsame Abfrage optimieren musstest. Wie bist du vorgegangen?
Strukturier deine Antwort so, dass ein klarer Problemlösungsprozess erkennbar ist.
Fang damit an, das Problem und seine Auswirkungen zu beschreiben: Unser Kunden-Dashboard hat 45 Sekunden zum Laden gebraucht, weil die Hauptabfrage einen kompletten Tabellenscan bei einer Tabelle mit einer Million Zeilen gemacht hat. Das hat die Nutzer genervt und dazu gebracht, die Seite zu verlassen.
Geh deinen Diagnoseansatz durch: Ich hab den Abfrageausführungsplan angeschaut und gemerkt, dass uns ein Index für die Spalten fehlt, die in der WHERE-Klausel benutzt werden. Mir ist auch aufgefallen, dass die ORDER BY-Klausel nicht optimiert war.
Erklär mal deine Lösung und die Ergebnisse: Ich hab einen zusammengesetzten Index erstellt, der sowohl die Filter- als auch die Sortierspalten abdeckt. Nachdem ich es in unserer Testumgebung ausprobiert hatte, habe ich es in einer ruhigen Zeit aufgesetzt. Die Abfragezeit ist von 45 Sekunden auf unter 2 Sekunden gesunken, was das Problem mit der Dashboard-Leistung gelöst hat.
Leg in deiner Antwort immer Wert auf Messungen, Tests und quantifizierbare Ergebnisse.
Beschreib mal eine Situation, in der du jemandem, der nicht so technisch ist, ein kompliziertes Datenbankkonzept erklären musstest.
Konzentrier dich darauf, wie du technische Konzepte für die Leute aus dem Business verständlich gemacht hast.
Nimm ein konkretes Beispiel, bei dem du die technische Lücke erfolgreich geschlossen hast. Man könnte sagen: Unser Marketingteam war genervt, weil es 20 Minuten dauerte, bis ihr Bericht zur Kundensegmentierung fertig war. Anstatt Datenbankverknüpfungen und Indizes zu erklären, habe ich eine einfache Analogie benutzt.
Sag mal, wie du so kommunizierst: Ich hab ihnen gesagt, sie sollen sich vorstellen, Kunden zu suchen, die sowohl Produkt A als auch Produkt B gekauft haben. Das alte System war so, als würde man jede Quittung in einem riesigen Aktenschrank durchsuchen. Nach der Optimierung wäre es so, als hätte man Ordner nach Produkttyp sortiert, was die Suche echt schneller macht.
Zeig die Auswirkungen auf das Geschäft: Ich hab mich auf das konzentriert, was für sie wichtig war – der Bericht würde in 2 Minuten statt in 20 Minuten fertig sein, sodass sie schneller Einblicke bekommen und schneller auf Marktveränderungen reagieren könnten.
Zeig, dass du technische Arbeit in geschäftlichen Nutzen umsetzen kannst, ohne nicht-technische Leute mit Details zur Umsetzung zu überfordern.
Wie würdest du mit einer Situation umgehen, in der die Datenbank während der Hauptgeschäftszeiten ausfällt?
Zeig deine Fähigkeiten im Krisenmanagement durch eine strukturierte Reaktion:
- Sofortige Bewertung: Zuerst schaue ich, wie groß das Problem ist – ist alles komplett ausgefallen oder laufen noch ein paar Dienste? Ich schaue nach, ob unsere Lesereplikate für wichtige schreibgeschützte Vorgänge noch erreichbar sind.
- Kommunikationsen für Interessengruppen: Ich sage dem Notfallteam sofort Bescheid und schicke den betroffenen Abteilungen einen kurzen Status-Update mit einem voraussichtlichen Zeitplan für weitere Infos, auch wenn ich noch keine Lösung habe.
- Diagnoseprozess: Ich schaue mir Systemprotokolle, Speicherplatz, Speicherverbrauch, Netzwerkverbindung und Datenbankfehlerprotokolle an, um die Ursache zu finden. Wenn es ein Hardwarefehler ist, schalte ich auf unseren Standby-Server um.
- Regelmäßige Updates: Ich schicke alle 15 bis 30 Minuten Status-Updates, um die Beteiligten auf dem Laufenden zu halten, auch wenn es keine Fortschritte gibt. Kommunikation ist genauso wichtig wie das Lösen des Problems.
- Überprüfung nach dem Vorfall: „Nachdem das Problem gelöst ist, schreibe ich auf, was passiert ist, warum es passiert ist und was wir machen werden, damit es in Zukunft nicht mehr passiert.“
Das Wichtigste ist, dass du unter Druck ruhig bleibst und trotzdem klar kommunizieren kannst.
Zeig mir mal, wie du ein Datenbankschema für eine neue E-Commerce-App entwerfen würdest.
Geh deinen Ansatz Schritt für Schritt durch:
- Anforderungserfassung: Zuerst schaue ich mir an, was das Unternehmen braucht – welche Produkte verkauft werden, wie die Kunden einkaufen, welche Berichte gebraucht werden und wie viel Traffic zu erwarten ist.
- Identifikationsnummer der Einrichtung: Ich identifiziere die Kernentitäten wie Benutzer, Produkte, Bestellungen, Bestellpositionen, Kategorien und Zahlungen. Jede Einheit steht für ein wichtiges Geschäftskonzept, das man im Auge behalten muss.
- Beziehungsdesign-: Ich zeige auf, wie diese Einheiten miteinander hängen. Zum Beispiel haben Benutzer viele Bestellungen, Bestellungen haben viele Produkte über OrderItems, und Produkte gehören zu Kategorien.
- Leistungsplanung: Ich füge Indizes zu Spalten hinzu, die oft abgefragt werden, wie die E-Mail-Adresse des Benutzers für die Anmeldung, die Produkt-SKU für Suchanfragen und das Bestelldatum für Berichte. Ich denke auch, dass man große Tabellen wie Bestellungen nach Datum aufteilen sollte.
- Zukunftssicherheit für „ “: Ich entwerfe das Schema so, dass es wahrscheinlich zukünftige Funktionen wie Produktbewertungen, Werbeaktionen und Bestandsverfolgung ohne größere Umstrukturierungen aufnehmen kann.
Zeig, dass du von Anfang an sowohl die unmittelbaren Bedürfnisse als auch die langfristige Skalierbarkeit im Blick hast.
Erzähl mal von einer Situation, in der du Daten von einem Datenbanksystem in ein anderes verschieben musstest. Was für Herausforderungen hattest du?
Konzentrier dich auf Planung, Umsetzung und Problemlösung.
Fang damit an, den Kontext zu erklären: Wir sind von MySQL zu PostgreSQL gewechselt, um die bessere JSON-Unterstützung und die erweiterten Indizierungsfunktionen für unsere Analyseaufgaben zu nutzen.
Probleme und Herausforderungen auflisten: Die größte Herausforderung war, mit den Unterschieden bei den Datentypen klarzukommen – das Timestamp-Verhalten von MySQL war anders als das von PostgreSQL. Wir hatten auch gespeicherte Prozeduren, die neu geschrieben werden mussten.
Rede über deine Lösung: Ich hab einen genauen Plan für die Migration mit Rückgängigmach-Schritten erstellt. Wir haben die Migration in mehreren Schritten gemacht: Erst haben wir einen Teil der Tabellen verschoben und dann nach und nach den Rest, während wir die Daten konsistent gehalten haben.
Schließ mit den Ergebnissen von Test und Validierung ab: Wir haben zwei Wochen lang parallele Systeme laufen lassen und die Ergebnisse der alten und neuen Datenbanken verglichen, um sicherzugehen, dass die Daten stimmen. Wir haben das neue System auch einem Belastungstest unterzogen, bevor wir komplett umgestellt haben.
Wie gehst du mit Meinungsverschiedenheiten mit Teammitgliedern über Datenbankdesign-Entscheidungen um?
Zeig deine Fähigkeiten in Sachen Zusammenarbeit und Konfliktlösung:
- Hör dir das an und versteh es:: Ich versuche immer zuerst, ihre Sichtweise zu verstehen. Oft entstehen Meinungsverschiedenheiten durch unterschiedliche Prioritäten – vielleicht legen sie mehr Wert auf die Bequemlichkeit für Entwickler, während mir die Leistung wichtiger ist.
- Präsentier datengestützte Argumente: Ich belege meine Empfehlungen mit konkreten Beispielen. Wenn ich denke, dass wir einen Index brauchen, zeige ich dir die Ausführungspläne für Abfragen und die Leistungsbenchmarks.
- Finde Gemeinsamkeiten: Normalerweise sind wir uns über das Ziel einig – schnelle, zuverlässige Apps. Die Meinungsverschiedenheit dreht sich nur darum, wie man dorthin kommt.
Hier ist ein Beispiel: Ein Entwickler wollte für Benutzerprofile einen nosql-Ansatz nutzen, aber ich habe ein relationales Design vorgeschlagen. Wir haben die Vor- und Nachteile besprochen, Prototypen beider Ansätze getestet und uns für die Lösung entschieden, die am besten zu unseren Anforderungen an Konsistenz und zum Fachwissen unseres Teams passt.
Erzähl mir mal von einer Situation, in der du bei einem Datenbankprojekt unter großem Zeitdruck arbeiten musstest.
Zeig, dass du Prioritäten setzen und auch unter Druck gute Ergebnisse liefern kannst.
Mach dir ein Bild von der Situation: Wir hatten einen wichtigen Kundenbericht, der in drei Tagen für eine Vorstandssitzung fertig sein musste, aber die Abfrage dauerte über eine Stunde.
Sag mal, wie du Aufgaben priorisiert hast: Ich hab mich zuerst auf die größten Leistungssteigerungen konzentriert. Anstatt alles zu optimieren, habe ich die beiden teuersten Vorgänge im Abfrageausführungsplan rausgesucht.
Schnelle Erfolge erwähnen: Ich hab 'nen Abdeckungsindex für die Hauptabfrage hinzugefügt und die größte Tabelle nach Datum aufgeteilt. Dadurch wurde die Laufzeit von 60 Minuten auf 8 Minuten verkürzt.
Schluss mit Kommunikation und Ergebnissen: Ich hab den Produktmanager alle paar Stunden auf dem Laufenden gehalten, damit er bei Bedarf die Erwartungen des Vorstands steuern konnte. Wir haben den optimierten Bericht zwei Tage früher fertig und er wurde zur Vorlage für ähnliche Berichte.
Wie würdest du bei der Fehlerbehebung eines Datenbankleistungsproblems vorgehen, das nur ab und zu auftaucht?
Zeig mal deinen systematischen Debugging-Ansatz für Probleme, die ab und zu auftauchen:
- Einrichten von Überwachungs: Ich würde ein Monitoring einrichten, um die Leistungskennzahlen zu erfassen, wenn das Problem auftritt – Abfrageausführungszeiten, Systemressourcen, gleichzeitige Verbindungen.
- Sammle Daten: Ich würde die Abfrageprotokollierung aktivieren, um zu sehen, was läuft, wenn die Leistung nachlässt. Ich würde auch nach Mustern suchen – passiert das zu bestimmten Zeiten, bei bestimmten Benutzern oder bei bestimmten Vorgängen?
- Formuliere Hypothesen: Aufgrund der Daten würde ich Hypothesen aufstellen. Vielleicht ist es ein Batch-Job, der jede Stunde läuft, oder ein bestimmter Bericht, der Tabellen sperrt.
- Isolierung und Test: Ich würde versuchen, das Problem in einer Testumgebung mit ähnlichen Datenmengen und Abfragemustern nachzustellen.
Hier ist ein Beispiel: Ich hab mal ein Performance-Problem gefunden, das nur dienstags morgens aufgetreten ist. Es stellte sich raus, dass ein wöchentlicher Datensynchronisierungsjob zur gleichen Zeit wie unsere Hauptnutzungszeit lief und so zu einer Sperrkonflikt-Situation führte.
Sag mal, wie würdest du mit einer Anfrage für Datenbankzugriff von jemandem umgehen, der normalerweise nicht mit Datenbanken arbeitet?
Zeig dein Sicherheitsbewusstsein und deine Fähigkeit, anderen was beizubringen.
Die Bedürfnisse einschätzen: Ich würde erst mal checken, was die eigentlich erreichen wollen. Oft gibt's einen besseren Weg, um die benötigten Infos zu kriegen, ohne direkt auf die Datenbank zugreifen zu müssen.
Biete Alternativen an, um Sicherheitsbedenken zu zeigen: Anstatt auf die Datenbank zuzugreifen, könnte ich eine schreibgeschützte Ansicht erstellen, ein Dashboard bauen oder die benötigten Daten als CSV-Datei exportieren.
Wenn der Zugang nötig ist, sag einfach, dass Sicherheit trotzdem wichtig ist: Ich würde ein schreibgeschütztes Konto einrichten, das nur Zugriff auf die Tabellen hat, die sie brauchen. Ich würde auch eine Grundschulung zu SQL-Best Practices und zu den Abfragen geben, die die Leistung beeinflussen könnten.
Erwartungen festlegen: Ich würde erklären, warum es wichtig ist, während der Stoßzeiten keine teuren Abfragen zu machen, und sie bitten, sich vorher bei mir zu melden, bevor sie irgendwas Kompliziertes machen.
Erklär mir mal, wie du Berichte über Dateninkonsistenzen in einer Produktionsdatenbank untersuchen würdest.
Zeig, wie du bei Datenintegritätsproblemen systematisch vorgehst:
- Erste Einschätzung: Zuerst würde ich konkrete Beispiele für die Unstimmigkeit sammeln. Welche Daten sind falsch, wann wurde das bemerkt und wie sollten sie richtig sein?
- Zeitstrahl-Rekonstruktions: Ich würde die Datenbankprotokolle, Anwendungsprotokolle und die letzten Bereitstellungen checken, um zu sehen, wann die Unstimmigkeit wohl aufgetreten ist.
- Umfang der Bewertung: Ich würde Abfragen machen, um zu sehen, wie weit verbreitet das Problem ist. Betrifft das alle Datensätze oder nur bestimmte? Gibt's Muster, die auf der Zeit, den Aktionen der Nutzer oder den Datenquellen basieren?
- Ursachenanalyse: Ich würde nach möglichen Ursachen suchen – Fehler in der Anwendung, fehlgeschlagene Transaktionen, Probleme beim Datenimport oder Probleme mit dem gleichzeitigen Zugriff.
- Sofortmaßnahmen: Wenn das Problem immer noch da ist, würde ich den Prozess, der es verursacht, finden und stoppen. Bei historischen Daten würde ich erst mal schauen, ob eine Korrektur möglich und sicher ist.
Hier ist ein Beispiel: Ich hab mal Kundenbestellungen mit negativen Mengen gefunden. Beim Checken der Anwendungsprotokolle habe ich eine Race Condition im Inventaraktualisierungsprozess entdeckt. Wir haben den Fehler in der Anwendung behoben und die betroffenen Bestellungen mithilfe von Transaktionsprotokollen korrigiert.
Werde SQL-zertifiziert
Tipps zur Vorbereitung auf ein DBMS-Vorstellungsgespräch
Der beste Weg, um bei einem DBMS-Vorstellungsgespräch zu punkten, ist, mit echten Datenbanken zu üben und nicht nur die Theorie auswendig zu lernen. Die Interviewer wollen sehen, dass du echte Probleme lösen kannst, nicht nur Definitionen auswendig lernen.
Übe SQL mit echten Datensätzen
Übe nicht nur einfache „ SELECT “-Anweisungen, sondern arbeite mit unordentlichen Daten aus der Praxis.
Lade Datensätze von Kaggle runter oder nutze öffentliche Datenbanken wie die Sakila-Beispieldatenbank für MySQL. Übe komplexe Abfragen, die mehrere Verknüpfungen, Unterabfragen und Aggregationen beinhalten. Das Ziel ist, sich mit Situationen vertraut zu machen, die man bei der Arbeit tatsächlich erleben wird.
Fragen wie diese sollten dir leicht fallen, und du solltest keine Probleme haben, alle Teile zu erklären:
SELECT
c.customer_id,
c.first_name,
c.last_name,
COUNT(r.rental_id) as total_rentals,
SUM(p.amount) as total_spent
FROM customer c
LEFT JOIN rental r ON c.customer_id = r.customer_id
LEFT JOIN payment p ON r.rental_id = p.rental_id
WHERE r.rental_date >= '2025-07-01'
GROUP BY c.customer_id, c.first_name, c.last_name
HAVING COUNT(r.rental_id) > 10
ORDER BY total_spent DESC;
Richte deine eigene Datenbankumgebung ein
Installiere ein Datenbanksystem bei dir vor Ort und lerne, wie es wirklich funktioniert.
Such dir eins der großen Systeme aus – PostgreSQL, MySQL oder SQL Server – und richte eine lokale Instanz ein. Erstelle Tabellen, füge Daten ein und probier verschiedene Konfigurationen aus. Lerne, wie du Ausführungspläne liest, Indizes erstellst und die Leistung überwachst.
Diese praktische Erfahrung hilft dir dabei, Fragen zur Datenbankverwaltung zu beantworten, nicht nur zur SQL-Syntax.
Wenn du dich für eine Stelle als Datenbankadministrator bewirbst, solltest du die Antworten auf diese 30 wichtigsten Fragen im Vorstellungsgespräch für DBAs kennen.
Echte Leistungsprobleme untersuchen
Lerne, häufige Leistungsengpässe zu erkennen und zu beheben.
Nutze Tools wie EXPLAIN oder EXPLAIN ANALYZE, um zu verstehen, wie deine Abfragen ausgeführt werden:
EXPLAIN ANALYZE
SELECT * FROM orders
WHERE customer_id = 12345
AND order_date > '2023-01-01';
Übe, Tabellenscans, fehlende Indizes und ineffiziente Verknüpfungen zu erkennen. Erstell große Datensätze und schau dir an, wie sich verschiedene Strategien auf die Abfrageleistung auswirken.
Das Verständnis von Ausführungsplänen ist das, was in Vorstellungsgesprächen Junior-Entwickler von Senior-Entwicklern unterscheidet.
Übe Datenbankdesign
Mach die ganzen Schema-Design-Übungen durch, nicht nur einzelne Tabellen.
Such dir echte Szenarien aus, wie zum Beispiel eine E-Commerce-Website, eine Social-Media-Plattform oder ein Inventarsystem. Entwerfen Sie das komplette Datenbankschema, einschließlich Beziehungen, Einschränkungen und Indizes. Überleg mal, wie das Design mit Wachstum und sich ändernden Anforderungen klarkommen würde.
Zeichne Entity-Relationship-Diagramme und sei bereit, deine Designentscheidungen zu erklären. Interviewer fragen oft: „Warum hast du dich für diesen Ansatz entschieden und nicht für eine der Alternativen?“ Sag mir, dass du eine Antwort parat hast.
Ich empfehle dir, den Kurs „Datenbankdesign“ zu checken, um dein Wissen auf die nächste Stufe zu bringen.
Schau dir sowohl SQL- als auch nosql-Konzepte an.
Auch wenn es in deinem Job hauptsächlich um relationale Datenbanken geht, solltest du wissen, wann nosql sinnvoll ist.
Du solltest die Grundlagen von Dokumentenspeichern wie MongoDB, Schlüsselwertspeichern wie Redis und Spaltenfamilien-Datenbanken wie Cassandra kennen. Verstehe die Kompromisse zwischen Konsistenz und Verfügbarkeit in verteilten Systemen.
Das zeigt, dass du über eine einzige Technologie hinausdenken und das richtige Tool für das jeweilige Problem auswählen kannst.
Der Kurs „nosql-Konzepte“ ist ein super Einstieg.
Bereite Geschichten über echte Datenbankprobleme vor
Nenn mal ein paar konkrete Beispiele, wo du Probleme mit Datenbanken gelöst hast.
Bereite 3–4 Geschichten vor, in denen du langsame Abfragen optimiert, Schemata entworfen, Daten migriert oder Datenbankausfälle behoben hast. Benutz die STAR-Methode – Situation, Aufgabe, Aktion, Ergebnis –, um deine Antworten zu strukturieren.
Übe, technische Konzepte Leuten zu erklären, die sich damit nicht auskennen. Interviewer fragen oft, wie du Datenbankprobleme den Geschäftspartnern erklären würdest.
Bleib auf dem Laufenden über Datenbank-Trends
Lies mehr über moderne Datenbanktechnologien und -praktiken.
Folge Datenbank-Blogs, schau dir Webinare an oder mach bei Datenbank-Communities mit. Mach dich mit Themen wie Datenbank-Sharding, MVCC, verteilte Datenbanken und Cloud-Datenbankdienste vertraut.
Du musst nicht in allem ein Experte sein, aber wenn du zeigst, dass du die aktuellen Trends kennst, beweist du, dass du dich mit dem Fachgebiet auskennst.
Zusammenfassung der DBMS-Interviewfragen
DBMS-Interviews checken alles ab, von der grundlegenden SQL-Syntax bis hin zu kniffligen Entscheidungen beim Systemdesign.
Um sie zu meistern, solltest du grundlegende Konzepte wie Normalisierung, Indizierung und Transaktionen verstehen. Dann kannst du dich mit fortgeschrittenen Themen wie Sharding und Hochverfügbarkeitsdesign beschäftigen. Theorie allein reicht nicht aus – du musst Datenbankwissen mit echten Geschäftsproblemen verbinden.
Die besten Leute verbinden technische Ideen mit praktischen Ergebnissen. Wenn du Indizes erklärst, sag auch, dass sie die Abfragezeit von Minuten auf Sekunden verkürzen. Wenn du über Replikation redest, sag doch mal, wie sie teure Ausfallzeiten verhindert.
Übe, komplexe Datenbankkonzepte für Leute ohne technischen Hintergrund klar zu erklären. Bereite konkrete Geschichten über Leistungsoptimierung, Umgang mit Ausfällen oder Schema-Design mit messbaren Ergebnissen vor – „Reduzierung der Abfragezeit um 90 %” ist besser als „schnellere Abfragen”.
Neben SQL und DBMS kann es nicht schaden, sich auf Fragen zum Thema Data Warehouse im Vorstellungsgespräch vorzubereiten.
Lerne die Grundlagen, übe mit echten Daten und verbinde dein technisches Wissen immer mit dem geschäftlichen Nutzen – so schaffst du es in DBMS-Vorstellungsgesprächen. Übung macht den Meister.
Um die grundlegenden Datenbank- und Datenbankdesign-Fähigkeiten zu lernen, empfehle ich diese Kurse und Materialien von DataCamp:
FAQs
Welche DBMS-Fragen werden in Vorstellungsgesprächen oft gestellt?
DBMS-Interviews drehen sich meistens um vier Hauptthemen: grundlegende Konzepte wie Normalisierung und ACID-Eigenschaften, SQL-Syntax und Abfrageoptimierung, Fragen zum Systemdesign in Bezug auf Skalierbarkeit und Leistung sowie Verhaltensszenarien zum Umgang mit realen Datenbankproblemen. Die grundlegenden Fragen testen dein Verständnis der wichtigsten Datenbankprinzipien, während die Fragen für Fortgeschrittene sich auf praktische SQL-Kenntnisse und die Leistungsoptimierung konzentrieren. Die fortgeschrittenen Fragen checken, ob du Datenbanksysteme in großem Maßstab entwerfen und komplexe architektonische Entscheidungen treffen kannst.
Wie soll ich mich als Anfänger auf DBMS-Interviewfragen vorbereiten?
Fang damit an, die SQL-Grundlagen zu lernen – SELECT-Anweisungen, Joins, Aggregationen und grundlegende Prinzipien des Datenbankdesigns wie Normalisierung. Übe das Schreiben von Abfragen auf echten Datensätzen mit Plattformen wie SQLBolt oder W3Schools und richte eine lokale Datenbankumgebung ein, um praktische Erfahrungen zu sammeln. Konzentrier dich darauf, zu verstehen, warum Datenbankkonzepte existieren, anstatt nur die Syntax auswendig zu lernen – das hilft dir, deine Argumentation in Vorstellungsgesprächen zu erklären.
Was ist der Unterschied zwischen der Vorbereitung auf Junior- und Senior-DBMS-Positionen?
Junior-Positionen konzentrieren sich stark auf SQL-Syntax, grundlegende Datenbankkonzepte und die Umsetzung bestehender Datenbankdesigns. In leitenden Positionen geht's vor allem um Systemdesign, Performance-Optimierung, den Umgang mit Datenbankausfällen und architektonische Entscheidungen zu Sharding, Replikation und Skalierungsstrategien. Erfahrene Kandidaten sollten zeigen, dass sie schon mit echten Datenbankproblemen zu tun hatten und technische Ideen sowohl Technikfreaks als auch Leuten ohne technischen Hintergrund rüberbringen können.
Sollte ich mir bestimmte SQL-Syntax für verschiedene Datenbanksysteme merken?
Merke dir nicht jede Syntaxvariante der verschiedenen Datenbanksysteme – konzentriere dich lieber darauf, die grundlegenden SQL-Konzepte zu verstehen, die plattformübergreifend funktionieren. Die meisten Vorstellungsgespräche nutzen die Standard-SQL-Syntax, und die Interviewer wissen, dass man bestimmte Syntaxdetails während der Arbeit nachschlagen kann. Übe lieber, deine Suchlogik und deinen Ansatz zur Problemlösung zu erklären.
Wie gehe ich mit DBMS-Fragen zu Technologien um, die ich noch nie benutzt habe?
Sei ehrlich, was deine Erfahrung angeht, aber zeig, dass du lernst und dich anpassen kannst. Erklär mal die Konzepte, die du verstehst, und zieh Parallelen zu Technologien, mit denen du schon gearbeitet hast. Wenn du zum Beispiel nach MongoDB gefragt wirst, aber nur MySQL kennst, rede einfach über die allgemeinen Unterschiede zwischen Dokumenten- und relationalen Datenbanken. Zeig Neugier, indem du Fragen stellst, um Dinge zu klären, und erzähl, wie du die neue Technologie lernen würdest.
