Interviewfrage für Softwareentwickler

Wie funktioniert ein Datenbankindex, und wann macht ein zusätzlicher Index es schlimmer?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Ein Index ist eine separate sortierte Struktur, meist ein B-Baum, die Spaltenwerte auf Zeilenpositionen abbildet, damit die Engine seeken statt scannen kann. Er beschleunigt Reads, die auf diesen Spalten filtern oder sortieren. Er kostet dich bei Writes, weil jedes Insert, Update und Delete ihn pflegen muss, und er kostet Speicher. Spalten mit geringer Selektivität und Indizes, die niemand abfragt, sind meist ein Minusgeschäft.

Warum Interviewer das fragen

Indizes sind das Werkzeug mit der größten Hebelwirkung für die meisten Entwickler und gleichzeitig das, was am leichtesten blind kopiert wird. Der Interviewer prüft, ob du die Write-Seite des Trades verstehst, ob du weißt, dass die Selektivität entscheidet, ob der Planner den Index überhaupt nutzt, und ob du erklären kannst, warum jede Spalte zu indizieren keine Strategie ist. Außerdem öffnet es die Tür zum Query Planning.

So baust du deine Antwort auf

  • Beschreib den Index als sortierte Lookup-Struktur mit Zeigern auf Zeilen.
  • Erklär den Read-Vorteil als Seeks statt Scans.
  • Benenne die Write- und Speicherkosten explizit.
  • Gib einen Fall, in dem der Planner den Index trotzdem ignoriert.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ein Index ist im Grunde eine sortierte Kopie einer oder mehrerer Spalten mit Zeigern zurück auf die Zeilen, meist ein B-Baum, damit die Engine binär suchen kann statt jede Page zu lesen. Damit wird aus einem Filter auf einer großen Tabelle statt eines Sequential Scan eine Handvoll Page Reads. Der Preis ist, dass jeder Write den Index mitpflegen muss, eine Tabelle mit acht Indizes zahlt beim Insert also achtmal, und Bulk Loads werden richtig langsam. Das andere, worauf ich achte, ist Selektivität. Wenn eine Spalte ein Boolean ist, das für neunzig Prozent der Zeilen true ist, scannt der Planner meistens einfach, weil wahlfreier Zugriff auf so viele Zeilen teurer ist als sequentiell zu lesen. Ich hatte einen Fall, in dem jemand einen Index auf eine status-Spalte mit drei Werten gelegt hat und sich überhaupt nichts verbessert hat. Geholfen hat am Ende ein zusammengesetzter Index auf tenant id und created at, passend zu Filter und Sortierung, damit die Datenbank seeken und dann in Reihenfolge lesen konnte, ohne einen separaten Sortierschritt.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Warum ist die Spaltenreihenfolge in einem zusammengesetzten Index wichtig?
  • Was bringt dir ein Covering Index?
  • Wie würdest du feststellen, ob der Planner deinen Index benutzt?

Weitere Fragen für Softwareentwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen