PostgreSQL 初始化参数
PostgreSQL 配置参数在 postgresql.conf 文件中进行设置。对大多数设置进行更改都需要重新启动 PostgreSQL 数据库集群。
要提高 PostgreSQL 使用 ArcGIS 时的性能,建议您在 PostgreSQL 中对以下设置进行更改。
设置和参数可能因操作系统而异。请务必阅读 PostgreSQL 文档以了解有关这些参数的使用和设置的信息。
max_connections
PostgreSQL 的默认 max_connections 设置是 100。一个 ArcGIS 客户端连接等同于两个 PostgreSQL 连接。
决定如何设置 PostgreSQL 的 max_connections 参数时,要考虑连接应用程序所使用的连接数以及一次可连接多少不同的客户端应用程序。例如,如果一个用户通过 ArcMap 和 ArcCatalog 连接到数据库,则每个应用程序分别占用两个连接,该用户将一共建立四个连接。此外,如果同一用户运行地理处理脚本,则脚本在其整个执行过程中都会占用两个连接。
还要考虑连接到数据库的所有 Web 应用程序。对于 ArcIMS,连接数按每个空间服务器的线程进行计算。默认情况下,每种类型的服务器使用两个线程。有些服务类型使用多种类型的服务器;因此,连接数等于服务数乘以线程数。对于 ArcGIS for Server Web 应用程序,连接数按服务实例进行计算:连接数等于正在运行的实例的数量。(请注意,一个 Web 应用程序可使用多个服务;因此,连接数等于服务数乘以运行的实例的数量。)对于自定义应用程序,您需要决定每个应用程序要使用的连接数并在估计必要连接数时充分考虑此因素。
此外,还必须考虑通过 PostgreSQL 参数 super_user_reserved connections 为超级用户留出的连接数。当并发连接数达到 max_connections 与 superuser_reserved_connections 的差值时,应允许超级用户接受新连接。如果保持两个参数的默认设置,则意味着建立了第 97 个并发连接后,只有超级用户才能使用剩余的 3 个连接进行连接。
如果更改此参数值,需重新启动 PostgreSQL 数据库集群。另外需要注意的是,增加此值时,您可能需要同时增加 shared_buffers 值,因为 shared_buffers 的最小值取决于为 max_connections 设置的值。
shared_buffers
shared_buffers 参数用于设置 PostgreSQL 数据库服务器中共享内存缓冲区所占用的内存量。默认为 32 MB,但如果 UNIX 内核设置不支持则可能少于 32 MB。此设置必须大于或等于 128 KB,并且至少应为 16 KB 与 max_connections 值的乘积。PostgreSQL 文档提示您,为获得良好的性能,需要将此参数设置为明显高于最小值的值。对于生产安装,建议使用几十兆字节。
如果更改此参数,必须重新启动数据库集群。
max_fsm_pages 和 max_fsm_relations
这两个参数仅适用于 PostgreSQL 8.4.x 及更低版本。它们用于控制共享的可用空间映射的大小,可用空间映射可追踪数据库中未使用空间的位置。Max_fsm_pages 用于设置共享的可用空间映射最多可追踪多少个磁盘页内的可用空间。每页占用六字节的共享内存。此设置的值必须至少为 max_fsm_relations 值的 16 倍。默认值由 initdb 根据可用内存量进行选择,其范围可从 20 KB 到 200 KB 页。Max_fsm_relations 用于设置共享的可用空间映射最多可追踪多少个关系的可用空间。默认值为 1,000 个关系。这两个参数只能在服务器启动时进行设置。
可以执行数据库范围的 VACUUM VERBOSE 命令来帮助您确定当前设置是否适合。您可以通过 VACUUM VERBOSE 命令所显示消息的最后几行来确定。如果当前设置的值过低,还会在此操作期间打印一条 NOTICE 消息。
wal_buffers
wal_buffers 参数用于指定共享内存中预写日志 (WAL) 数据所占用的内存量。默认值为 64 KB。您只需将此值设置为足以存储一个典型事务所生成的 WAL 数据即可,因为每次提交事务时该数据均将写入磁盘。此参数只能在服务器启动时进行设置。
增加之前参数的值可能会导致 PostgreSQL 请求的 System V 共享内存超出 Linux 操作系统默认配置所允许的数量。有关更改共享内存分配的信息,请查阅 PostgreSQL 文档中的“管理内核资源”主题。