ich habe die maintenance_work_mem auf 1960MB geändert und es kommt immer noch die gleiche Fehlermeldung. Wenn ich auf 2048MB gehe, erhalte ich die folgende Fehlermeldung:
ERROR: 2097152 is outside the valid range for parameter “maintenance_work_mem” (1024 … 2097151)
du hast die untere grenze vergessen - schau die fehlermeldung nochmal an …
der begint bereits bei 10 bit - dazu nochmal 22 … macht wieviel?
ok … man muss es (Dir zuliebe) ja nicht gleich “bug” nennen … aber die Fehlermeldung ist scheisse - dass musst zugeben … ein bug wäre es, wenn bereits vorher eine prüfung vorgesehen waere die aber nicht greif - um gescheite fehlermeldungen zu liefern.
obwohl - bug ist schon korrekt - immerhin hat er die daten ja auch da reingekriegt - und es wird ein innerer zustand erzeugt, mit dem PG umgehen koennen sollte (vacuum). tut es aber nicht …
wieso … 32 bit heisst 2 GB per process … das heisst 2 GB pro Connection … oder nicht?
Das ist aber auch garnicht das aktuelle Problem - nur eine Randbemerkung
Ahared memory ist doch keine allgemeine Grenze! Das ist halt für IPC notwendig. Es gibt ja immernoch genug Notwendigkeiten für den Heap jedes Prozesses.
Die Aussage, dass 8 GB für die Katz seien stimmt so einfach nicht.
PostgreSQL kann auf einem 32-Bit System aber nur maximal 4 GB davon nutzen. Das wirst auch du nicht in Abrede stellen können.
Die Aussage, dass 8 GB für die Katz seien stimmt so einfach nicht.
Denk was du willst, wenn die Datenbank nur max. 4 GB nutzen kann, bringen weitere 4 auch nichts. Selbst das OS kann da nur mittelmäßig Gebrauch von machen …
Pass auf - das ist unter Windows Sache des Speichermanagements … Windows XP/2003 kann auch in der 32 Bit Version mehr als 4 GB für Prozesse nutzbar machen. Das ist so ein oller Trick aus DOS-zeiten wie mit XMS
Die Prozesse nutzen sowieso virtuellen Speicher - der bei 32 Bit windows immer irgendwas mit 2 3 oder 4 GB zu tun hat. Wo der Speicher dann speziell liegt ist dem Prozess ja egal.
Daher machen die 8GB durchaus Sinn.
Richtig ist, dass EIN Prozess trotzdem nicht mehr als 32 Bit addressieren kann.
Wir reden hier aber mehrere Prozesse …
Das ist z.B. sogar so ein Anwendungsfall wo das Konzept PG-Prozesse je Connection zu forken ein Vorteil ist. Im Gegensatz zu DBMS die in einem Prozess nur Threads erzeugen. Die haben dann pech
spannend zu erwähnen ist auch, dass ich bei shared_buffers auch nicht mehr als die 2GB eintragen kann… wenn ich das mache startet der DB-Server nicht mehr.
Wusste gar nicht, dass es für Windows eine 64Bit Version gibt…? Soll das jetzt heissen, dass die Grenze hier bei 2GB liegt?
Komisch, dass es beim Restore geht. By the Way, das ist ein Windows 2003 R2 32Bit System mit 3GB Ram und wie gesagt “nur” 256MB maintenace_work_mem. Ebenfalls mit PG 8.3
bitte nicht streiten… schlussendlich bin ich froh über neue Erkenntnisse und konstruktive Voschläge. Wie gesagt, lief der Dump und Restore Problemlos durch und alles scheint bestens mit dieser Tabelle wohl bemerkt auf dem anderen Server (Windows 2003 32Bit). Was ich mal testen kann ist ein Restore auf dem 64Bit System. Vielleicht hat es ja damit zu tun.
Ich auch nicht. Hat aber nix zu bedeuten, es gibt schlicht keine.
Soll das jetzt heissen, dass die Grenze hier bei 2GB liegt?
Ja. Windows und viele Daten macht ja auch nicht wirklich ernsthaft Sinn, oder?
Komisch, dass es beim Restore geht. By the Way, das ist ein Windows 2003 R2 32Bit System mit 3GB Ram und wie gesagt “nur” 256MB maintenace_work_mem. Ebenfalls mit PG 8.3
Ich vermute eine korrupte Tabelle, vielleicht durch einen Plattenfehler oder sonstwas. Du solltest prüfen, ob das Backup brauchbar & vollständig ist.