PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Maximale (nutzbare) Anzahl von Zeilen in einer Postgresql-Tabelle

Es ist nicht nur "ein Haufen Tuning (Indizes etc.)". Dies ist entscheidend und ein Muss.

Sie haben nur wenige Details gepostet, aber versuchen wir es.

Die Regel lautet:Versuchen Sie, den gängigsten Arbeitssatz zu finden. Schau mal ob es in den RAM passt. Optimieren Sie Hardware, PG/OS-Puffereinstellungen und PG-Indizes/Clustering dafür. Suchen Sie andernfalls nach Aggregaten, oder wenn es nicht akzeptabel ist und Sie einen vollständig wahlfreien Zugriff benötigen, überlegen Sie, welche Hardware die gesamte Tabelle in angemessener Zeit für Sie scannen könnte.

Wie groß ist Ihre Tabelle (in Gigabyte)? Wie verhält es sich mit dem gesamten RAM? Was sind Ihre PG-Einstellungen, einschließlich shared_buffers und Effective_cache_size? Ist das ein dedizierter Server? Wenn Sie eine 250-GB-Tabelle und etwa 10 GB RAM haben, bedeutet dies, dass Sie nur 4 % der Tabelle unterbringen können.

Gibt es Spalten, die häufig zum Filtern verwendet werden, z. B. Bundesland oder Datum? Können Sie den am häufigsten verwendeten Arbeitssatz identifizieren (z. B. nur im letzten Monat)? Wenn dies der Fall ist, ziehen Sie in Betracht, diese Spalten zu partitionieren oder zu gruppieren, und indizieren Sie sie auf jeden Fall. Grundsätzlich versuchen Sie sicherzustellen, dass so viel Arbeitssatz wie möglich in den Arbeitsspeicher passt.

Vermeiden Sie unbedingt, die Tabelle zu scannen, wenn sie nicht in den Arbeitsspeicher passt. Wenn Sie wirklich einen absolut wahlfreien Zugriff benötigen, ist die einzige Möglichkeit, wie er verwendet werden kann, wirklich hochentwickelte Hardware. Sie benötigen eine permanente Speicher-/RAM-Konfiguration, die 250 GB in angemessener Zeit lesen kann.