Frage

ich so viel Link-Strukturdaten gerade beendet die Übertragung über wikipedia (English), wie ich konnte. Im Grunde habe ich heruntergeladen eine Reihe von SQL-Dumps aus wikipedia neuesten Dump-Repository . Da ich anstelle von MySQL bin mit PostgreSQL, habe ich beschlossen, alle diese Deponien in meine db zu laden Shell mit Pipeline Befehle .

Wie auch immer, eine dieser Tabellen hat 295 Millionen Zeilen: der pagelinks Tisch; es enthält alle intra-wiki Hyperlinks. Von meinem Laptop, mit pgAdmin III, schickte ich den folgenden Befehl an meinen Datenbank-Server (ein anderer Computer):

SELECT pl_namespace, COUNT(*) FROM pagelinks GROUP BY (pl_namespace);

Es ist es gewesen für eine Stunde oder so jetzt. Die Sache ist die, dass die Post auffressen mehr zu sein scheint und mehr meinen sehr begrenzten HD Raum. Ich denke, es isst etwa 20 GB ab sofort. Ich hatte zuvor mit der postgresql.conf-Datei, um es zu geben, mehr Leistung Flexibilität rumgespielt (d lässt es mehr Ressourcen) für sie mit 12 GB RAM laufen. Ich glaube, ich im Grunde die meisten Bytes und solche verwandten Variablen dieser Datei vervierfacht dachte, es würde mehr RAM nutzen, um ihre Sache zu tun.

Allerdings ist der db scheint nicht viel RAM zu verwenden. Unter Verwendung des Linux-System-Monitor, ich bin in der Lage zu sehen, dass die Post wird mit 1,6 GB Shared-Memory (RAM). Wie auch immer, ich habe mich gefragt, ob ihr helfen könnte, mich besser zu verstehen, was es für sie tut scheint, dass ich wirklich nicht verstehen, wie PostgreSQL verwendet HD Ressourcen .

die Metastruktur von wikipedia Datenbanken angeht, so bieten sie eine gute

Andere Tipps

Was genau behauptet, dass es nur 9,5 MB RAM nehmen wird? Das klingt unwahrscheinlich mir - den gemeinsam genutzten Speicher an Sicherheit grenzender Wahrscheinlichkeit ist RAM, die zwischen verschiedenen Postgres Prozessen gemeinsam genutzt wird. (Von dem, was ich mich erinnere, jeder Client endet als separaten Prozess, obwohl es eine Weile gewesen, so konnte ich sehr falsch sein.)

Haben Sie einen Index für die pl_namespace Spalte? Wenn es eine ganze Menge von unterschiedlichen Ergebnissen ist, konnte ich diese Abfrage vorstellen, ohne Index auf einer 295 Millionen Zeilen Tabelle ziemlich schwer zu sein. Having said that, 10GB ist schrecklich viel zu schlucken. Wissen Sie, welche Dateien es schriftlich?

Ok, so ist hier der Kern von ihm:

die GROUP BY-Klausel aus dem Index‘ungültig, so die Postmeister (postgresql-Server-Prozess) beschlossen, eine Reihe von Tabellen (23GB von Tabellen) zu erstellen, die im Verzeichnis $ PGDATA / base / 16384 / pgsql_tmp befänden.

Wenn die postgresql.conf-Datei ändern, hatte ich die Erlaubnis zu postgreSQL gegeben 1.6 GB RAM zu verwenden (was ich jetzt verdoppeln wird für sie den Zugang zu 11,7 GB RAM); der Post Prozess wurde mit der Tat 1,6 GB RAM, aber das war nicht genug, damit das pgsql_tmp Verzeichnis.

Wie von Barry Brown weist darauf hin, da ich nur diesen SQL-Befehl ausführen einige statistischen Informationen über die Verteilung der Verbindungen zwischen der pagelinks.namespaces bekommen, ich einer Teilmenge von abgefragt haben könnte die 296 Millionen pagelinks (das ist, was sie für Umfragen zu tun).

Wenn der Befehl das Ergebnis zurückgegeben, alle temporären Tabellen wurden automatisch gelöscht, als ob nichts geschehen wäre.

Danke für Ihre Hilfe Jungs!

scroll top