Paramètres d'initialisation PostgreSQL
Les paramètres de configuration PostgreSQL sont définis dans le fichier postgresql.conf. Dans la plupart des cas, vous devez redémarrer le cluster de bases de données PostgreSQL après avoir modifié l'un de ces paramètres.
Voici quelques recommandations concernant les modifications susceptibles d'être apportées à votre application PostgreSQL pour améliorer ses performances avec ArcSDE.
![Remarque Remarque](rsrc/note.png)
Les réglages et paramètres varient en fonction du système d'exploitation utilisé. Veillez à consulter la Documentation PostgreSQL pour plus d'informations sur l'utilisation et le réglage de ces paramètres.
max_connections
La valeur max_connections par défaut pour PostgreSQL est 100. Une connexion du client ArcGIS équivaut à deux connexions PostgreSQL.
Au moment de décider de la définition du paramètre max_connections PostgreSQL, tenez compte du nombre de connexions utilisées par l'application connectée et du nombre d'applications clientes différentes susceptibles d'être connectées simultanément. Par exemple, si un utilisateur faisant appel à une connexion de service ArcSDE se connecte à la base de données depuis ArcMap et ArcCatalog, cela entraîne deux connexions pour chacune de ces applications, c'est-à-dire un total de quatre connexions pour cet utilisateur. Si, en outre, ce même utilisateur exécute un script de géotraitement, ce script conserve deux connexions pendant toute la durée de l'exécution du script.
Tenez également compte de toute application Web connectée à la base de données. Pour ArcIMS, les connexions sont comptées par thread, par serveur spatial. Par défaut, chaque type de serveur utilise deux threads. Certains types de service utilisent plusieurs types de serveur ; par conséquent, le nombre de connexions correspond au nombre de services multiplié par le nombre de threads. Pour les applications ArcGIS Server Web, les connexions sont comptées par instance de service ; le nombre de connexions est égal au nombre d'instances en cours d'exécution. (Notez qu'une application Web peut faire appel à plusieurs services ; par conséquent, le nombre de connexions correspond au nombre de services multiplié par le nombre d'instances en cours d'exécution.) Pour les applications personnalisées, vous devez déterminer le nombre de connexions utilisées par chaque application et prendre cet élément en compte pour évaluer le nombre de connexions nécessaires.
Vous devez également prendre en compte le nombre de connexions réservées aux super-utilisateurs via le paramètre de connexions super_user_reserved PostgreSQL. Si le nombre de connexions simultanées atteint la valeur max_connections moins la valeur superuser_reserved_connections, les nouvelles connexions sont acceptées pour les superutilisateurs. Si vous conservez les valeurs par défaut pour ces deux paramètres, cela signifie qu'une fois la 97ème connexion simultanée établie, seuls les super-utilisateurs peuvent se connecter via les trois connexions restantes.
Si vous modifiez la valeur de ce paramètre, redémarrez le cluster de bases de données PostgreSQL. Notez également que si vous augmentez cette valeur, vous risquez de devoir parallèlement augmenter la valeur shared_buffers, car sa valeur minimale dépend du nombre de max_connections.
shared_buffers
Le paramètre shared_buffers définit la quantité de mémoire utilisée par le serveur de base de données PostgreSQL pour les zones tampon de mémoire partagée. Sa valeur par défaut est de 32 Mo, mais elle peut être réduite si les paramètres de votre noyau UNIX ne la prennent pas en charge. Cette valeur doit être de 128 Ko ou davantage et d'au moins 16 Ko multiplié par la valeur de max_connections. La documentation PostgreSQL indique que vous devez définir ce paramètre sur une valeur beaucoup plus élevée que la valeur minimale pour obtenir des performances satisfaisantes. Il est recommandé de le définir sur plusieurs dizaines de mégaoctets pour les installations de production.
Si vous modifiez la valeur de ce paramètre, vous devez redémarrer le cluster de bases de données.
max_fsm_pages et max_fsm_relations
Ces deux paramètres contrôlent la taille de la carte d'espace adressable partagée, qui recherche les emplacements d'espace inutilisé dans la base de données. Le paramètre max_fsm_pages définit le nombre maximal de pages de disque pour lesquelles une recherche d'espace adressable sera effectuée dans la carte d'espace adressable partagée. Chaque page consomme six octets de mémoire partagée. Cette valeur doit être d'au moins 16 fois la valeur de max_fsm_relations. La valeur par défaut est sélectionnée par initdb en fonction de la quantité de mémoire disponible et peut varier entre 20 Ko et 200 Ko de pages. Le paramètre max_fsm_relations définit le nombre maximal de relations de disque pour lesquelles une recherche d'espace adressable sera effectuée dans la carte d'espace adressable partagée. La valeur par défaut est de mille relations. Ces deux paramètres peuvent être définis uniquement au démarrage du serveur.
Vous pouvez exécuter une commande VACUUM VERBOSE sur l'ensemble de la base de données pour déterminer si les paramètres en cours sont appropriés. Les dernières lignes des messages d'affichage VACUUM VERBOSE vous y aident. Un message NOTICE s'imprime également au cours de cette opération si les paramètres en cours sont trop faibles.
wal_buffers
Le paramètre wal_buffers indique la quantité de mémoire utilisée dans la mémoire partagée pour l'écriture des données de journal (WAL). Sa valeur par défaut est de 64 Ko. Il suffit de définir cette valeur à un niveau suffisamment élevé pour contenir la quantité de données WAL générées par une seule transaction type, car les données sont écrites sur le disque à chaque transaction validée. Ce paramètre peut être défini uniquement au démarrage du serveur.
![Remarque Remarque](rsrc/note.png)
L'augmentation des valeurs des paramètres précédents peut entraîner PostgreSQL à requérir davantage de mémoire partagée sur le Système V que la configuration par défaut de votre système d'exploitation Linux le permet. Consultez la rubrique « Gestion des ressources de noyau », dans la Documentation PostgreSQL, pour obtenir plus d'informations sur la modification de l'allocation de mémoire partagée.