PostgreSQL-Initialisierungsparameter
PostgreSQL-Konfigurationsparameter werden in der Datei "postgresql.conf" festgelegt. Bei den meisten dieser Einstellungen ist im Fall einer Änderung ein Neustart des PostgreSQL-Datenbank-Clusters erforderlich.
Im Folgenden sind einige Empfehlungen für Änderungen aufgelistet, mit denen Sie die Performance von PostgreSQL mit ArcSDE verbessern können.
Einstellungen und Parameter sind je nach Betriebssystem unterschiedlich. Lesen Sie die PostgreSQL-Dokumentation für Informationen zur Verwendung und der Einstellung dieser Parameter.
max_connections
Die Standard-Einstellung von "max_connections" für PostgreSQL ist 100. Eine ArcGIS-Client-Verbindung entspricht zwei PostgreSQL-Verbindungen.
Berücksichtigen Sie beim Festlegen des PostgreSQL-Parameters "max_connections" die Anzahl der von der verbindenden Anwendung verwendeten Verbindungen und wie viele Client-Anwendungen gleichzeitig verbunden sein können. Beispiel: Wenn ein Benutzer, der eine Verbindung über einen ArcSDE-Dienst verwendet, über ArcMap und ArcCatalog eine Verbindung herstellt, sind das zwei Verbindungen je Anwendung, also insgesamt vier Verbindungen für diesen Benutzer. Wenn dieser Benutzer außerdem ein Geoverarbeitungsskript ausführt, nimmt dieses Skript über den Zeitraum der Ausführung zwei Verbindungen in Anspruch.
Des Weiteren müssen Sie alle Webanwendungen berücksichtigen, die mit der Datenbank verbunden sind. Bei ArcIMS werden Verbindungen pro Thread und pro Spatial-Server gezählt. Standardmäßig verwendet jeder Servertyp zwei Threads. Einige Dienste verwenden mehrere Servertypen, somit entspricht die Anzahl der Verbindungen der Anzahl der Dienste multipliziert mit der Anzahl der Threads. Bei ArcGIS Server-Webanwendungen werden Verbindungen pro Dienstinstanz gezählt, die Anzahl der Verbindungen entspricht also der Anzahl der ausgeführten Instanzen. (Beachten Sie, dass eine Webanwendung mehrere Dienste verwenden kann, die Anzahl der Verbindungen also der Anzahl der Dienste multipliziert mit der Anzahl der ausgeführten Instanzen entspricht.) Bei benutzerdefinierten Anwendungen müssen Sie ermitteln, wie viele Verbindungen jede Anwendung verwendet, und dies bei der Schätzung der erforderlichen Verbindungen berücksichtigen.
Darüber hinaus müssen Sie die Anzahl der Verbindungen berücksichtigen, die Sie mit dem PostgreSQL-Parameter "superuser_reserved_connections" für Superuser reservieren. Wenn die Anzahl der gleichzeitigen Verbindungen den Wert von "max_connections" minus "superuser_reserved_connections" erreicht, werden neue Verbindungen nur noch für Superuser akzeptiert. Wenn Sie die Standardeinstellungen für beide Parameter beibehalten, können nur Superuser mit den letzten drei Verbindungen eine Verbindung herstellen, nachdem die 97. gleichzeitige Verbindung hergestellt wurde.
Wenn Sie diesen Parameterwert ändern, müssen Sie den PostgreSQL-Datenbank-Cluster neu starten. Wenn Sie einen höheren Wert für diesen Parameter einstellen, müssen Sie ggf. auch den Wert für "shared_buffers" erhöhen, da der Mindestwert für diesen Parameter von dem Wert für "max_connections" abhängt.
shared_buffers
Mit dem Parameter "shared_buffers" legen Sie fest, wie viel Speicher der PostgreSQL-Datenbankserver für gemeinsame Speicherpuffer verwendet. Der Standardwert ist 32 MB, kann jedoch auch niedriger sein, falls dieser von den UNIX-Kernel-Einstellungen nicht unterstützt wird. Dieser Wert muss auf mindestens 128 KB festgelegt werden und mindestens 16 KB multipliziert mit dem Wert des Parameters "max_connections" betragen. In der PostgreSQL-Dokumentation ist angegeben, dass Sie für diesen Parameter einen bedeutend höheren Wert als den Mindestwert festlegen müssen, um eine gute Performance zu erzielen. Für Produktionsinstallationen werden mehrere Dutzend Megabytes empfohlen.
Wenn Sie diesen Parameterwert ändern, müssen Sie den Datenbank-Cluster neu starten.
max_fsm_pages und max_fsm_relations
Mit diesen beiden Parametern wird die Größe der Free Space Map gesteuert. Dies ist eine Datenstruktur, die Informationen über ungenutzte Speichersegmente in der Datenbank erfasst. "max_fsm_pages" gibt die maximale Anzahl der Festplattenspeicherseiten an, für die freie Speichersegmente in der Free Space Map nachverfolgt werden. Für jede Seite werden sechs Bytes gemeinsamen Speichers benötigt. Dieser Wert muss mindestens 16-mal so groß sein wie der Wert für "max_fsm_relations". Der Standardwert wird von "initdb" gewählt und ist von der Menge an verfügbarem Speicher abhängig. Dieser Wert kann zwischen 20 KB und 200 KB liegen. "max_fsm_relations" gibt die maximale Anzahl der Beziehungen an, für die freie Speichersegmente in der Free Space Map nachverfolgt werden. Der Standardwert ist tausend Beziehungen. Diese beiden Parameter können nur beim Serverstart festgelegt werden.
Sie können einen datenbankweiten VACUUM VERBOSE-Befehl ausführen, um zu ermitteln, ob die aktuellen Einstellungen angemessen sind. Die letzten Zeilen des Befehls VACUUM VERBOSE enthalten entsprechende Informationen. Während dieses Vorgangs wird auch eine Warnmeldung (NOTICE) ausgegeben, wenn die aktuellen Einstellungen zu niedrig sind.
wal_buffers
Mit dem Parameter "wal_buffers" legen Sie fest, wie viel Speicher im gemeinsamen Speicher für Write Ahead Log (WAL)-Daten verwendet wird. Die Standardeinstellung ist 64 KB. Sie müssen einen Wert einstellen, der groß genug für die von einer typischen Transaktion generierte Menge an WAL-Daten ist, da die Daten bei jeder Transaktionsübernahme auf Festplatte geschrieben werden. Dieser Parameter kann nur beim Serverstart festgelegt werden.
Wenn Sie die Werte der beschriebenen Parameter erhöhen, fordert PostgreSQL u. U. mehr gemeinsame Speichersegmente (System V Shared Memory) an, als die Standardkonfiguration Ihres Linux-Betriebssystems zulässt. Informationen zum Ändern der Zuweisung für gemeinsamen Speicher finden Sie in der PostgreSQL-Dokumentation unter "Managing Kernel Resources".