Leistungsoptimierungsleitfaden

Guides
Zuletzt aktualisiert: 16. Februar 2026

Willkommen zum HarborDB-Leistungsoptimierungsleitfaden. Diese umfassende Ressource hilft Ihnen, jeden Aspekt Ihres PostgreSQL-Arbeitsablaufs zu optimieren, vom Schreiben effizienter Abfragen bis zur Konfiguration von HarborDB und macOS für maximale Leistung.

Leistungsfaktoren verstehen

Mehrere Faktoren beeinflussen die Leistung Ihrer Datenbank in HarborDB:

| Faktor | Auswirkung | Optimierungsebene | | ---------------------------- | ---------- | -------------------- | | Abfragedesign | Hoch | Anwendung | | Datenbankindizes | Hoch | Datenbank | | Netzwerkverbindung | Mittel | Infrastruktur | | Systemressourcen | Mittel | macOS | | HarborDB-Einstellungen | Niedrig-Mittel | Anwendung | | PostgreSQL-Konfiguration | Hoch | Datenbank |

Abfrageoptimierung

Effiziente Abfragen schreiben

1. Nur das auswählen, was Sie benötigen

-- ❌ Ineffizient
SELECT * FROM customers;

-- ✅ Effizient
SELECT customer_id, name, email FROM customers;

2. WHERE-Klauseln effektiv verwenden

-- ❌ Ineffizient (vollständiger Tabellenscan)
SELECT * FROM orders
WHERE EXTRACT(YEAR FROM order_date) = 2024;

-- ✅ Effizient (verwendet Index)
SELECT * FROM orders
WHERE order_date >= '2024-01-01'
  AND order_date < '2025-01-01';

3. Ergebnismengen begrenzen

-- Immer begrenzen beim Erkunden
SELECT * FROM large_table LIMIT 100;

-- Paginierung für große Ergebnisse verwenden
SELECT * FROM products
ORDER BY created_at DESC
LIMIT 50 OFFSET 0;

4. N+1-Abfrageprobleme vermeiden

-- ❌ Ineffizient (mehrere Abfragen)
-- Erste Abfrage: SELECT * FROM orders WHERE status = 'pending'
-- Dann für jede Bestellung: SELECT * FROM customers WHERE customer_id = ?

-- ✅ Effizient (einzelne Abfrage mit JOIN)
SELECT o.*, c.name, c.email
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE o.status = 'pending';

EXPLAIN zur Abfrageanalyse verwenden

HarborDB macht die Abfrageleistungsanalyse einfach:

  1. Schreiben Sie Ihre Abfrage im Editor
  2. Klicken Sie auf "Erklären" (⚡) in der Symbolleiste
  3. Überprüfen Sie den Ausführungsplan im Ergebnisbereich

EXPLAIN-Ausgabe verstehen

  • Seq Scan: Vollständiger Tabellenscan (oft langsam für große Tabellen)
  • Index Scan: Index verwenden (normalerweise schneller)
  • Nested Loop: Tabellen verknüpfen (prüfen, ob angemessen)
  • Kostenschätzungen: Höhere Zahlen bedeuten mehr Arbeit

Häufige Optimierungsmuster

-- Fehlenden Index vorschlagen
EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 1234;

-- Ergebnis könnte zeigen: "Seq Scan on orders"
-- Lösung: CREATE INDEX idx_orders_customer_id ON orders(customer_id);

Datenbank-Index-Optimierung

Wann Indizes hinzufügen

Fügen Sie Indizes hinzu für:

  • Primärschlüssel (automatisch indiziert)
  • Fremdschlüssel (oft manuelle Indizierung benötigt)
  • Häufig gefilterte Spalten
  • Häufig sortierte Spalten
  • In JOIN-Bedingungen verwendete Spalten

Effektive Indizes erstellen

-- Einspaltiger Index
CREATE INDEX idx_orders_status ON orders(status);

-- Mehrspaltiger Index (Reihenfolge wichtig!)
CREATE INDEX idx_orders_date_status ON orders(order_date, status);

-- Partieller Index (für bestimmte Teilmengen)
CREATE INDEX idx_active_users ON users(email) WHERE active = true;

-- Eindeutiger Index für Constraint
CREATE UNIQUE INDEX idx_unique_email ON users(email);

Index-Wartung

-- Indexnutzung überprüfen
SELECT schemaname, tablename, indexname
FROM pg_stat_user_indexes
WHERE idx_scan = 0;  -- Never used indexes

-- Fragmentierte Indizes neu aufbauen
REINDEX INDEX idx_orders_status;

-- Statistiken für Query-Planner aktualisieren
ANALYZE orders;

Verbindungsoptimierung

Verbindungspool-Einstellungen

Optimieren Sie Ihre HarborDB-Verbindungen:

  1. Öffnen Sie EinstellungenVerbindungen
  2. Passen Sie Einstellungen basierend auf Ihrem Arbeitsablauf an:

| Einstellung | Empfohlener Wert | Zweck | | -------------------------- | ---------------- | ------------------------------ | | Verbindungstimeout | 30 Sekunden | Hängende Verbindungen verhindern | | Keep-Alive | Aktiviert | Inaktive Verbindungen erhalten | | Maximale Verbindungen | 5-10 | Leistung/Speicher ausbalancieren | | SSL-Modus | Bevorzugen | Sicher ohne Overhead |

Netzwerkoptimierung

Für Remote-Datenbanken:

  1. Verwenden Sie SSH-Tunneling für sichere, optimierte Verbindungen
  2. Aktivieren Sie Komprimierung für große Ergebnismengen
  3. Planen Sie aufwändige Abfragen außerhalb der Hauptzeiten
  4. Überwachen Sie Netzwerklatenz mit integrierten Tools
-- Netzwerklatenz testen
SELECT 1 as test;  -- Einfache Abfrage zur Messung der Round-Trip-Zeit

HarborDB-Leistungseinstellungen

Speicherverwaltung

Passen Sie die Speichernutzung in EinstellungenLeistung an:

| Einstellung | Empfehlung | Auswirkung | | ---------------------- | -------------- | ----------------------------- | | Abfrage-Cache | 256 MB | Schnellere wiederholte Abfragen | | Ergebnismengen-Speicher | 512 MB | Größere Datensätze verarbeiten | | Streaming-Modus | Aktiviert | Besser für große Ergebnisse | | Auto-Aktualisierung | 30 Sekunden | Aktualität/Leistung ausbalancieren |

Interface-Optimierung

  1. Deaktivieren Sie Animationen in Einstellungen → Darstellung
  2. Reduzieren Sie die Auto-Vervollständigungsverzögerung auf 100ms
  3. Begrenzen Sie die automatische Seitenleisten-Erweiterungstiefe
  4. Verwenden Sie den Dunkelmodus für OLED-Display-Effizienz

Tastenkürzel für Geschwindigkeit

Beherrschen Sie diese Produktivitäts-Booster:

| Tastenkürzel | Aktion | Zeitersparnis | | ------------ | -------------------- | ------------------- | | ⌘ + R | Abfrage ausführen | 2-3 Sekunden | | ⌘ + . | Abfrage abbrechen | Verhindert Wartezeiten | | ⌘ + T | Neuer Abfrage-Tab | 1-2 Sekunden | | ⌘ + S | Abfrage speichern | 1 Sekunde | | ⌘ + E | Ergebnisse exportieren | 2 Sekunden | | ⌘ + F | In Abfrage suchen | 3-5 Sekunden |

macOS-Systemoptimierung

Hardware-Überlegungen

Arbeitsspeicher (RAM)

  • Mindestens: 8 GB für grundlegende Nutzung
  • Empfohlen: 16 GB für professionelle Arbeit
  • Optimal: 32 GB für große Datensätze

Speicher (SSD)

  • Mindestens: 256 GB freier Speicherplatz
  • Empfohlen: 512 GB+ für Datenbankdateien und Exporte
  • Externe SSD verwenden für große Datenbankspeicherung

Prozessor

  • Apple Silicon: M1/M2/M3 optimiert
  • Intel: i5 mindestens, i7/i9 empfohlen

macOS-Einstellungen

  1. Energiesparmodus (Systemeinstellungen):

    • Deaktivieren Sie "Festplatten in Ruhezustand versetzen"
    • Display während langer Abfragen eingeschaltet lassen
  2. Aktivitätsanzeige:

    • Überwachen Sie die HarborDB-Speichernutzung
    • Überprüfen Sie PostgreSQL-Prozessressourcen
  3. Festplatten-Dienstprogramm:

    • Stellen Sie sicher, dass SSD TRIM aktiviert ist
    • Überwachen Sie die Festplattengesundheit und freien Speicherplatz

Terminal-Leistungsbefehle

# Systemressourcen überprüfen
top -o cpu  # CPU-Nutzung
vm_stat     # Speichernutzung
iostat      # Disk-I/O

# HarborDB spezifisch überwachen
ps aux | grep HarborDB
lsof -p $(pgrep HarborDB) | wc -l  # Geöffnete Dateien

Strategien für große Datensätze

Arbeiten mit Millionen von Zeilen

1. Serverseitige Paginierung

-- Instead of loading all rows
SELECT * FROM huge_table;

-- Use pagination
SELECT * FROM huge_table
ORDER BY id
LIMIT 1000 OFFSET 0;

-- Next page
SELECT * FROM huge_table
ORDER BY id
LIMIT 1000 OFFSET 1000;

2. Streaming-Ergebnisse

Aktivieren in EinstellungenLeistung:

  • ✅ "Streaming für Ergebnisse > 10.000 Zeilen aktivieren"
  • ✅ "Streaming-Chunk-Größe: 1000 Zeilen"
  • ✅ "Hintergrund-Streaming: Aktiviert"

3. Materialisierte Ansichten

-- Pre-compute expensive queries
CREATE MATERIALIZED VIEW daily_sales_summary AS
SELECT
    DATE(order_date) as day,
    COUNT(*) as orders,
    SUM(total) as revenue
FROM orders
GROUP BY DATE(order_date);

-- Refresh periodically
REFRESH MATERIALIZED VIEW daily_sales_summary;

Exportoptimierung

Für große Exporte:

  1. Exportieren Sie nach CSV (effizienter als JSON)
  2. Verwenden Sie Chunk-Exporte (Einstellungen → Export)
  3. Komprimieren Sie Exporte automatisch
  4. Exportieren Sie direkt auf externen Speicher

Leistungsüberwachung

Integrierte HarborDB-Tools

  1. Abfrage-Timer: Zeigt Ausführungszeit in der Statusleiste
  2. Speichermonitor: Anzeige unter Fenster → Leistungsmonitor
  3. Verbindungsstatus: Echtzeit-Netzwerkmetriken
  4. Abfrageverlauf: Vergangene Abfrageleistung überprüfen

PostgreSQL-Überwachungsabfragen

-- Aktive Abfragen
SELECT
    pid,
    usename,
    query_start,
    state,
    query
FROM pg_stat_activity
WHERE state != 'idle'
ORDER BY query_start DESC;

-- Langsame Abfragen
SELECT
    query,
    calls,
    total_time,
    mean_time,
    rows
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;

-- Tabellenstatistiken
SELECT
    schemaname,
    relname,
    seq_scan,
    idx_scan,
    n_tup_ins,
    n_tup_upd,
    n_tup_del
FROM pg_stat_user_tables
ORDER BY seq_scan DESC;

Häufige Leistungsprobleme & Lösungen

Problem: "Abfrage dauert zu lange"

Lösungscheckliste:

  1. [ ] Passende Indizes hinzufügen
  2. [ ] Abfrage effizienter umschreiben
  3. [ ] PostgreSQL-Konfiguration überprüfen
  4. [ ] Netzwerkverbindung überprüfen
  5. [ ] Timeout-Einstellungen bei Bedarf erhöhen

Problem: "HarborDB verwendet zu viel Speicher"

Lösungsschritte:

  1. Abfrage-Cache-Größe reduzieren (Einstellungen → Leistung)
  2. Unbenutzte Abfrage-Tabs schließen
  3. HarborDB regelmäßig neu starten
  4. Auf Speicherlecks prüfen (Aktivitätsanzeige)
  5. System-RAM erhöhen, wenn regelmäßig Limits erreicht werden

Problem: "Export/Import sehr langsam"

Optimierungstipps:

  1. CSV-Format anstelle von JSON verwenden
  2. Antiviren-Scanning im Zielordner deaktivieren
  3. Auf SSD statt HDD exportieren
  4. PostgreSQL-Nativ-Tools (pg_dump/pg_restore) für sehr große Operationen verwenden
  5. Große Operationen in kleinere Batches aufteilen

Problem: "Interface fühlt sich träge an"

Schnelllösungen:

  1. Syntaxhervorhebung für sehr große Abfragen deaktivieren
  2. Automatische Seitenleisten-Erweiterung reduzieren
  3. Einfacheres UI-Theme verwenden
  4. Andere ressourcenintensive Anwendungen schließen
  5. HarborDB und macOS neu starten

Erweiterte Optimierungstechniken

Partitionierung großer Tabellen

-- Partitionierte Tabelle erstellen
CREATE TABLE orders_partitioned (
    order_id BIGSERIAL,
    order_date DATE NOT NULL,
    customer_id INT,
    total DECIMAL(10,2)
) PARTITION BY RANGE (order_date);

-- Partitionen erstellen
CREATE TABLE orders_2024_q1 PARTITION OF orders_partitioned
    FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');

CREATE TABLE orders_2024_q2 PARTITION OF orders_partitioned
    FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');

Query-Plan-Hinweise

-- Indexnutzung erzwingen (vorsichtig verwenden)
SET enable_seqscan = off;

-- Arbeitspeicher vorübergehend erhöhen
SET work_mem = '64MB';

-- Spezifische Join-Methode verwenden
SET enable_nestloop = off;
SET enable_hashjoin = on;

Verbindungspooling mit PGBouncer

Für Anwendungen mit hoher Parallelität:

  1. Installieren Sie PGBouncer (Homebrew: brew install pgbouncer)
  2. Konfigurieren Sie für Transaktions-Pooling
  3. Verbinden Sie HarborDB über PGBouncer
  4. Überwachen Sie Verbindungswiederverwendungsstatistiken

Leistungstests

Benchmark-Abfragen erstellen

-- Abfrageleistung testen
EXPLAIN ANALYZE
SELECT * FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31'
  AND status = 'completed'
ORDER BY total DESC
LIMIT 100;

-- Mit verschiedenen Ansätzen vergleichen
EXPLAIN ANALYZE
SELECT * FROM orders
WHERE status = 'completed'
  AND order_date >= '2024-01-01'
  AND order_date <= '2024-12-31'
ORDER BY total DESC
LIMIT 100;

Überwachung über Zeit

Erstellen Sie eine Leistungsprotokolltabelle:

CREATE TABLE query_performance_log (
    log_id SERIAL PRIMARY KEY,
    query_hash TEXT,
    execution_time_ms INTEGER,
    row_count INTEGER,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    notes TEXT
);

-- Langsame Abfragen protokollieren
INSERT INTO query_performance_log
    (query_hash, execution_time_ms, row_count, notes)
SELECT
    md5(query),
    EXTRACT(MILLISECONDS FROM NOW() - query_start),
    result_rows,
    'Langsame Abfrage erkannt'
FROM pg_stat_activity
WHERE state = 'active'
  AND NOW() - query_start > INTERVAL '5 seconds';

Best Practices Zusammenfassung

Täglicher Arbeitsablauf

  1. Beginnen Sie mit EXPLAIN für neue komplexe Abfragen
  2. Verwenden Sie LIMIT beim Erkunden von Daten
  3. Schließen Sie ungenutzte Verbindungen
  4. Starte HarborDB regelmäßig neu (wöchentlich)
  5. Überwachen Sie Systemressourcen während intensiver Arbeit

Wöchentliche Wartung

  1. Überprüfen Sie Abfrageleistungsprotokolle
  2. Prüfen Sie auf ungenutzte Indizes
  3. Aktualisieren Sie PostgreSQL-Statistiken (ANALYZE)
  4. Bereinigen Sie temporäre Dateien
  5. Sichern Sie Leistungskonfigurationen

Monatliche Überprüfung

  1. Analysieren Sie langsame Abfragemuster
  2. Erwägen Sie Tabellenpartitionierung für Wachstum
  3. Überprüfen Sie Hardware-Anforderungen
  4. Aktualisieren Sie HarborDB und PostgreSQL
  5. Dokumentieren Sie Leistungsverbesserungen

Hilfe erhalten

Leistungsoptimierungs-Support

Wenn Sie zusätzliche Hilfe benötigen:

  1. Teilen Sie Abfragepläne mit unserem Support-Team
  2. Exportieren Sie Leistungsprotokolle (Einstellungen → Protokolle exportieren)
  3. Fügen Sie Systemangaben hinzu (macOS-Version, RAM, Speicher)
  4. Beschreiben Sie Ihren Arbeitsablauf und typische Datensatzgrößen

Zusätzliche Ressourcen

War das hilfreich?

Helfen Sie uns, diese Dokumentation zu verbessern, indem Sie Feedback geben.