2017-10-20 32 views
2

entwerfe ich eine Postgres-basierte App, um mit vielen Benutzern große Datenmengen zu verarbeiten. Daten werden so modelliert, dass die meisten Lesevorgänge nur drei Tabellen verwenden, was bedeutet, dass alle Benutzer dieselben Datensätze zur gleichen Zeit betrachten.Wie wirken sich parallele Lesevorgänge auf Postgres aus?

In Bezug auf liest (nicht schreibt) - viele gleichzeitige Lesevorgänge slow Db nach unten, oder ist der Fall, dass einmal im Speicher zeigt Postgres die gleiche Ansicht für alle gleichzeitige Benutzer ohne viel Verzögerung oder Ressourcenverbrauch?

Gibt es einen Punkt, an dem die Anzahl der Lesevorgänge des gleichen Datensatzes Postgres verlangsamt, oder wenn einmal im Speicher keine Daten mehr angezeigt werden?

Dank,

Alex Glaros

Antwort

4

viele gleichzeitige tun liest nach unten langsam db, oder ist der Fall, dass einmal im Speicher, Postgres zeigt die gleiche Sicht auf alle gleichzeitige Benutzer ohne große Verzögerung oder Ressource Verbrauch?

Wenn die gleichen Daten angefordert über und immer wieder, dann ja, es wird im Speicher gehalten werden (vorausgesetzt, Postgres hat genug Speicher zur Verfügung zu tun).

Gibt es einen Punkt, an dem die Zahl der des gleichen Datensatzes langsam Postgres liest unten

Nichts ist umsonst, also ja es Overhead beteiligt ist, wenn gleichzeitig ablaufenden Transaktionen die gleichen Daten bei anfordern genau gleichzeitig. Der Zugriff auf die Datenblöcke im Speicher muss durch Sperren (wenn auch sehr leicht), Latches und Semaphoren synchronisiert werden.

In einem System, in dem die vollständigen Daten gespeichert sind, erhält die CPU den begrenzenden Faktor. Die letzten Postgres-Versionen haben sich in puncto Skalierbarkeit mit mehreren gleichzeitigen Sitzungen drastisch verbessert. Stellen Sie daher sicher, dass Sie die neueste Version (9.6 oder sogar 10.0) verwenden.

Dies bezieht sich auf mehrere Transaktionen, die den gleichen Datenblock bei genau die gleiche Nanosekunde anfordern. Wenn die Transaktionen (Sitzungen, Verbindungen) normalerweise unterschiedliche Teile dieser drei Tabellen anfordern, werden Probleme aufgrund der Synchronisation auf Speicherblöcken nur unter sehr, sehr starker Last auftreten.

Verwandte Themen