Teil unserer Performance & Scalability-Serie
Den vollständigen Leitfaden lesenA properly tuned PostgreSQL instance can improve Odoo response times by 2-5x compared to default settings. Most Odoo performance problems trace back to database configuration -- default PostgreSQL settings are designed for minimal resource usage, not for powering a multi-user ERP system.
Wichtige Erkenntnisse
– Standardmäßige PostgreSQL-Einstellungen verwenden nur 128 MB gemeinsame Puffer – Produktions-Odoo benötigt 25 % des RAM – Fehlende Indizes für häufig abgefragte Spalten führen zu vollständigen Tabellenscans und langsamen Seitenladevorgängen – Verbindungspooling mit PgBouncer reduziert den Datenbankverbindungs-Overhead um 80 %
- Regelmäßiges VACUUM und ANALYZE verhindern das Aufblähen von Tabellen und halten die Abfragepläne optimal
PostgreSQL-Konfigurationsoptimierung
Speichereinstellungen
Bearbeiten Sie postgresql.conf mit den für Ihre Hardware geeigneten Einstellungen. Für einen Server mit 16 GB RAM setzen Sie shared_buffers auf 4 GB (25 % des gesamten RAM), effektive_cache_size auf 12 GB (75 % des gesamten RAM), work_mem auf 64 MB pro Vorgang, Maintenance_work_mem auf 1 GB und wal_buffers auf 64 MB.
Setzen Sie für die Abfrageplanung random_page_cost auf 1,1 für SSD-Speicher (Standard 4.0 setzt HDD voraus), Effective_io_concurrency auf 200 für SSDs und default_statistics_target auf 200 für genauere Abfragepläne.
Größenrichtlinien:
| Server-RAM | shared_buffers | effektive_cache_größe | work_mem |
|---|---|---|---|
| 4GB | 1GB | 3GB | 16 MB |
| 8GB | 2GB | 6GB | 32 MB |
| 16 GB | 4GB | 12 GB | 64 MB |
| 32 GB | 8GB | 24 GB | 128 MB |
| 64 GB | 16 GB | 48 GB | 256 MB |
Verbindungseinstellungen
Setzen Sie max_connections auf mindestens Odoo Worker x 2 plus Puffer. Bei 4 Workern und 2 Cron-Threads benötigen Sie mindestens 12 Verbindungen. Fügen Sie Verbindungen für Verwaltungstools, Überwachung und Hintergrundaufgaben hinzu. Ein Wert von 200 sorgt für komfortable Kopffreiheit.
Indexierungsstrategien für Odoo
Fehlende Indizes identifizieren
Aktivieren Sie die langsame Abfrageprotokollierung, indem Sie log_min_duration_statement auf 500 ms festlegen. Analysieren Sie dann das langsame Abfrageprotokoll, um vollständige Tabellenscans zu identifizieren.
Gemeinsame Odoo-Indizes
Odoo erstellt automatisch Indizes für Primärschlüssel und Fremdschlüssel. Fügen Sie Indizes für häufig gefilterte Spalten wie sale_order(state), account_move(state), stock_move(state), account_move(date) und sale_order(date_order) hinzu.
Mehrspaltige Indizes verbessern gängige Filterkombinationen: account_move_line(account_id, date) und stock_quant(product_id, location_id).
Bei Tabellen mit Statusspalten sind Teilindizes für aktive Datensätze effizienter – indizieren Sie nur Zeilen, deren Status nicht abgebrochen oder erledigt ist.
Abfrageanalyse mit EXPLAIN ANALYZE
Führen Sie EXPLAIN (ANALYZE, BUFFERS) für langsame Abfragen aus, um Ausführungspläne zu verstehen. Suchen Sie nach:
- Seq Scan: Vollständiger Tabellenscan, der auf einen fehlenden Index hinweist
- Verschachtelte Schleife: Kann bei großen Ergebnismengen teuer sein
- Sortieren: In-Memory-Sortierungen, die work_mem überschreiten, werden auf die Festplatte übertragen
- Gemeinsame Lesepuffer: Hohe Werte bedeuten, dass die Daten nicht zwischengespeichert werden
Häufige Leistungskiller:
- Fehlende Indizes für WHERE-Klauselspalten
- Große IN-Klauseln, die von Odoo ORM generiert werden
- Gespeicherte berechnete Felder, die bei Schreibvorgängen eine Neuberechnung auslösen
- Komplexe Berichtsabfragen, die mehr als 5 Tabellen verbinden
VAKUUM und Wartung
PostgreSQL MVCC erstellt tote Tupel, wenn Zeilen aktualisiert oder gelöscht werden. VACUUM beansprucht diesen Speicherplatz zurück und aktualisiert die Statistiken.
Konfigurieren Sie Autovacuum für Odoo-Workloads: Aktivieren Sie Autovacuum mit maximal 3 Arbeitern, 60-Sekunden-Schlafzeit, Vakuum-Skalierungsfaktor von 0,05 und Analyse-Skalierungsfaktor von 0,02. Legen Sie für Tabellen mit hohem Schreibzugriff (account_move_line, stock_move, mail_message) aggressivere Einstellungen pro Tabelle fest.
Monitor table bloat by checking total relation sizes and dead tuple counts. Verwenden Sie VACUUM FULL nur bei extremer Aufblähung (über 50 % Totraum) und nur während Wartungsfenstern, da dadurch der Tisch gesperrt wird.
Verbindungspooling mit PgBouncer
PgBouncer sitzt zwischen Odoo und PostgreSQL und bündelt Verbindungen, um den Overhead zu reduzieren. Verwenden Sie den Transaktionspoolmodus für Odoo, der Verbindungen zwischen Transaktionen freigibt. Setzen Sie default_pool_size auf 40 und max_client_conn auf 200. Richten Sie Odoo auf den PgBouncer-Port statt direkt auf PostgreSQL.
Überwachung
Wesentliche Kennzahlen
- Aktive Verbindungen: Sollte deutlich unter max_connections bleiben
- Cache-Trefferquote: Sollte über 99 % liegen
- Transaktionsrate: Baseline und auf Anomalien achten
- Langsame Abfrageanzahl: Abfragen überschreiten Ihren Schwellenwert
- Replikationsverzögerung: Bei Verwendung von Lesereplikaten
- Festplattennutzung: Wachstumsrate der Datenbankgröße
- Tabellenaufblähung: Verhältnis toter Tupel pro Tabelle
Verwenden Sie die Erweiterung pg_stat_statements, um die Abfrageleistung im Zeitverlauf zu verfolgen. Es zeichnet die Ausführungsanzahl, die Gesamtzeit, die mittlere Zeit und die zurückgegebenen Zeilen für jedes einzelne Abfragemuster auf.
Häufig gestellte Fragen
F: Woher weiß ich, ob PostgreSQL der Engpass ist?
Aktivieren Sie die langsame Abfrageprotokollierung und überprüfen Sie die Odoo-Leistungsprotokolle. Wenn die meisten langsamen Anfragen langsamen Abfragen entsprechen, hilft eine Optimierung. Wenn Abfragen schnell sind, Odoo jedoch langsam, liegt der Engpass im Anwendungscode oder im Netzwerk.
F: Sollte ich PostgreSQL-Repliken für Odoo verwenden?
Lesereplikate entlasten Berichtsabfragen von der Primärdatenbank. Odoo unterstützt die Lese-/Schreibaufteilung nicht nativ, daher leitet die benutzerdefinierte Konfiguration schreibgeschützte Abfragen an Replikate weiter. Dies ist vor allem bei sehr großen Bereitstellungen nützlich.
F: Welche PostgreSQL-Version sollte ich mit Odoo verwenden?
Verwenden Sie die neueste stabile Version, die von Ihrer Odoo-Version unterstützt wird. Neuere Versionen umfassen Verbesserungen des Abfrageoptimierers und eine bessere Vakuumleistung. Für aktuelle Odoo-Versionen wird PostgreSQL 16 oder 17 empfohlen.
F: Wie viel hilft die richtige Abstimmung tatsächlich?
Unserer Erfahrung nach führt der Wechsel von den Standardeinstellungen zu einer optimierten Konfiguration in der Regel zu einer Verbesserung der durchschnittlichen Seitenladezeiten um 40–60 % und einer Verringerung der Häufigkeit langsamer Abfragen um 80–90 %. Die Verbesserung ist dramatisch und unmittelbar.
Was kommt als nächstes?
Das PostgreSQL-Tuning ist die Optimierung mit der größten Auswirkung auf die Odoo-Leistung. Beginnen Sie mit den Speichereinstellungen und der Indizierung – diese beiden Änderungen allein reduzieren die Antwortzeiten oft um die Hälfte.
Kontaktieren Sie ECOSIRE, um Hilfe bei der Datenbankoptimierung zu erhalten, oder erkunden Sie unsere Odoo-Supportdienste für fortlaufendes Leistungsmanagement.
Herausgegeben von ECOSIRE – unterstützt Unternehmen bei der Skalierung mit Unternehmenssoftwarelösungen.
Geschrieben von
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Transformieren Sie Ihr Unternehmen mit Odoo ERP
Kompetente Odoo-Implementierung, Anpassung und Support zur Optimierung Ihrer Abläufe.
Verwandte Artikel
ADempiere vs. Odoo (2026): Open-Source-ERP-Vergleich
Ehrlicher Vergleich von ADempiere und Odoo: Architektur, Community-Gesundheit, reale Gesamtkosten, Migrationswege und wer bei ADempiere bleiben sollte.
Axelor vs Odoo (2026): Ehrlicher Vergleich zweier Open-Source-ERPs
Axelor vs Odoo 2026: Wie sich Axelors Low-Code-, BPM-zentriertes ERP gegen Odoos App-Store-Ökosystem schlägt — echte Stärken, Lizenzen, Preismodelle und wann welches gewinnt.
Gesamtbetriebskosten von Cloud-ERP: die echten 5-Jahres-Zahlen
Ein transparentes 5-Jahres-TCO-Modell für Cloud-ERP: Abonnement, Implementierung, Anpassung, Datenmigration, Schulung, Hosting, Upgrades und interne Verwaltungszeit, mit einem Vergleich für ein KMU mit 25 Nutzern zwischen Odoo, NetSuite und ERPNext.
Mehr aus Performance & Scalability
Shopify-Geschwindigkeitsoptimierung: Eine technische Checkliste, die die wichtigsten Web-Vitals tatsächlich verändert (2026)
Eine praxiserprobte Shopify-Geschwindigkeitscheckliste für 2026 – was LCP, INP und CLS in echten Shops tatsächlich verbessert, was Zeit verschwendet und wie man Apps und Themes prüft.
Technische SEO-Audit-Checkliste 2026: 47 Checks, die wir auf jeder Kundenseite durchführen
Die 47 Punkte umfassende technische SEO-Audit-Checkliste, die wir im Jahr 2026 auf jeder Kundenseite durchführen – Crawlbarkeit, Indexierung, Canonicals, Hreflang, Core Web Vitals und Protokolle.
Odoo 19 HR: Kompetenzmatrix, Karrierepläne, Leistungszyklen
Odoo 19 HR-Upgrade: native Kompetenzmatrix, Karriereplanung, Leistungsbeurteilungszyklen, 9-Boxen-Raster, Nachfolgeplanung, HRIS-Integration.
Odoo 19 Leistungsbenchmarks: PostgreSQL 17 Tuning-Nummern
Praxisnahe Odoo 19-Leistungsbenchmarks: Web-Client-Geschwindigkeit, ORM-Durchsatz, PG17-Optimierungseinstellungen, Verbindungspooling, Worker-Anzahl, Skalierungsschwellenwerte.
OpenClaw-Kostenoptimierung und Token-Effizienz im großen Maßstab
OpenClaw-Token-Kostenoptimierung: Prompt-Caching, Modell-Routing, Antwort-Caching, Batch-APIs und Kostenleitlinien pro Mandant für Produktionsagenten.
Inkrementelle Power BI-Aktualisierung für Tabellen mit mehr als 10 Millionen Zeilen
Playbook zur inkrementellen Aktualisierung von Power BI für mehr als 10 Millionen Zeilentabellen: Partitionsdesign, RangeStart/RangeEnd, Aktualisierungsrichtlinien, Abfragefaltung und DirectQuery-Hybride.