Ich analysiere eine 50 GB (16M Zeilen, 15 Spalten) Tabelle mit PostgreSQL 9.4 nur ausgewählte Abfragen verwenden (keine Einfügung \ Updates). Mein Server hat 4 virtuelle Sockets und 16 GB RAM. Eine typische Abfrage ich verwende:Große Abfragezeit für Analysezwecke
select y,count(z) from table where x in (select * from verySmallTable) group by y;
Das Ergebnis der Abfrage werden zu einem Python-Skript füttern.
Ich habe versucht, verschiedene Indizes zu erstellen, aber noch kann jede Abfrage 15 Minuten dauern. Darüber hinaus ist die Optimierung der Datenbank zeitaufwendig.
Auf der anderen Seite verwende ich Tableau (mit Datenextrakt), um ähnliche Informationen abzurufen und ein Ergebnis in weniger als einer Minute zu erhalten. Daraus schließe ich, dass solche Analyseabfragen mit der richtigen Struktur (automatisch erstellt) sehr schnell ausgeführt werden können.
Ich bin auf der Suche nach einer Möglichkeit, die Abfrage Laufzeit zu reduzieren, mit PostgreSQL (ich habe auch Oracle-Lizenz), oder eine andere Open-Source-DB oder sogar eine lokale Lösung in Python, die ich die Daten laden kann in, ohne die Struktur für jede Abfrage optimieren zu müssen.
Sie laden 50 GB in Tableau und erzielen eine bessere Leistung als in Postgres? –
Bitte lesen Sie http://stackoverflow.com/tags/postgresql-performance/info, bearbeiten Sie dann Ihre Frage und fügen Sie die fehlenden Informationen hinzu. –
@a_horse_with_no_name, danke ich habe die Informationen hinzugefügt. Gordon Linoff, ja, ein einfaches "select (distinct (userName)) aus der Tabelle" zum Beispiel verwende ich keinen Index für diese Spalte - das ist ein Teil des Problems, wie ich erklärte, ich bin nicht unbedingt auf der Suche nach zu bleiben mit PostgreSQL ist es nur eine einzige Tabelle. –