Index- und Join-Kostenschätzer

System-R-ähnliche Kostenschätzungen: sequentieller Scan gegen B+-Baum-Index (clustered oder nicht) sowie Nested-Loop-, Block-Nested-Loop-, Hash- und Sort-Merge-Joins — mit Seiten-I/O und einem einfachen CPU-Term.

Über dieses Tool

Zugriffspfade und Gleichheits-Joins anhand geschätzter Seiten-I/Os und eines einstellbaren CPU-Gewichts vergleichen. Lehrmodell, keine gemessenen Zeiten oder Pläne einer Datenbank-Engine. Eingabeänderungen leeren das betreffende Ergebnis; anschließend neu schätzen. Tabs und Eingaben bleiben bei Navigation und Neuladen erhalten.

Selektion. N und P sind Zeilen und Seiten; Selektivität ist ein Anteil von 0 bis 1. Eindeutige Gleichheit nimmt einen Treffer an und deaktiviert die Selektivität. Scan: P I/Os und N × CPU. Indexhöhe H enthält das erste Blatt: I/O = H−1 + max(1, ceil(Treffer / Schlüssel je Blatt)) + Datenzugriffe. Geclustert: ceil(Treffer × P / N), höchstens P; sonst ein Datenzugriff je Treffer. CPU = (1,2 × Treffer + H) × Gewicht. Deaktivierte Indexfelder werden ignoriert.

Joins. R bleibt außen, S innen. Ausgabe ≈ Zeilen R × Zeilen S × Selektivität. Seiten-Nested-Loop: Pᵣ + PᵣPₛ. Blockweise: Pᵣ + ceil(Pᵣ/(B−2))Pₛ. Ein Index auf S braucht H Zugriffe je äußerer Zeile plus einen je Ausgabezeile; zusätzliche Bereichsblätter werden nicht modelliert. Hash baut die kleinere Relation mit B−2 Aufbauseiten und gleichmäßigen B−1 Partitionen auf. Jede Partitionierungsstufe fügt Lesen und Schreiben beider Relationen hinzu. Keine Schlüssel-Schieflage simuliert.

Sortieren und CPU. Materialisiertes Sortieren startet mit ceil(P/B) Läufen und vereinigt jeweils B−1. Jeder Durchlauf kostet 2P; Sort-Merge liest beide sortierten Relationen anschließend. Kein Zusammenlegen letzter Sortier- und Joinphase, kein erneutes Lesen großer Duplikatgruppen oder Schreiben der Ausgabe. CPU ist ein heuristisches Operationsgewicht: Schleifen zählen Vergleiche, Indexschleifen Baumzugriffe und Treffer, Hash die doppelte Eingabezeilenzahl, Sortieren n log₂ n je Relation. Alle Joins zählen zusätzlich Ausgabezeilen. Das Gewicht hat abstrakte Einheiten eines Seiten-I/O, keine Millisekunden.

Anzahlen 1–10⁹, Puffer 3–10⁹, Höhe 1–8, CPU 0–10⁶. Gleitkommaschätzungen können gebrochen oder bei großen Kardinalitäten ungenau sein. Kein Cache, keine Histogramme, Parallelität oder Join-Reihenfolgensuche. Diagramm optional. Formelquellen: Berkeley CS186 Sortieren und Joins.

Auch ungültige oder unfertige Eingaben werden lokal gespeichert, bis zu 100000 Zeichen im serialisierten Zustand. Darüber bleibt die zuvor gespeicherte Kopie erhalten; Eingaben vor Neuladen oder Verlassen der Seite herunterladen. Navigation innerhalb der App erhält den laufenden Entwurf. Neuladen stellt die gespeicherten Eingaben wieder her und wartet auf Schätzen. Kleine Werte ungleich null und sehr große Kosten erscheinen in wissenschaftlicher Schreibweise; Schätzungen sind keine exakten Zählwerte.