Ajuste de memoria en PostgreSQL

Configuración en postgresql.conf

Para cargar fácilmente grandes cantidades de datos a una base de datos de PostgreSQL, es posible que deba aumentar los valores de shared_buffers y max_locks_per_transaction en el archivo postgresql.conf.

shared_buffers

El parámetro shared_buffers designa la cantidad de memoria que se utiliza para los búfers de memoria compartida. La documentación de PostgreSQL indica que, por razones de rendimiento, es probable que deba utilizar una configuración mayor al valor mínimo de 128 KB o 16 KB multiplicado por el número que se configuró como el valor de max_connections. Se recomienda configurar shared_buffers para utilizar varias decenas de megabytes en las instalaciones de producción.

Cuando carga grandes cantidades de datos, es muy probable que necesite una mayor configuración de shared_buffers que el valor predeterminado de 32 MB. Después de cambiar este parámetro en el archivo postgresql.conf, deberá reiniciar el cluster de base de datos.

max_locks_per_transaction

El valor de max_locks_per_transaction indica la cantidad de objetos de base de datos que se pueden bloquear de manera simultánea. En la mayoría de los casos, el valor predeterminado de 64 es suficiente. Sin embargo, cuando se carga una gran cantidad de datasets (por ejemplo, varios miles) a la vez, la cantidad de bloqueos de objeto concurrentes para la transacción puede exceder 64.

No hay una relación de uno a uno entre bloqueos concurrentes y la cantidad de datasets; en otras palabras, si carga 3.000 datasets, no debe aumentar el valor de max_locks_per_transaction a 3.000. Primero aumente el valor a 100 antes de aumentar las cargas.

Cuando cambia el valor del parámetro max_locks_per_transaction, debe reiniciar el servidor.

El aumento del valor de alguno de estos parámetros puede producir que la base de datos solicite más memoria compartida que la que el sistema operativo (SO) UNIX tiene disponible. Para obtener más información sobre cómo puede aumentar la configuración de la memoria compartida para el SO, consulte "Administrar recursos de kernel" en la documentación de PostgreSQL.

Mejorar el rendimiento de la consulta espacial de SQL

Cuando ejecuta consultas de SQL que devuelven columnas espaciales de ST_Geometry desde una tabla de negocios, puede aumentar el rendimiento de la consulta si configura una variable de entorno del sistema, ST_GEOMETRY_OUTPUT_FORMAT, con salida hacia el tipo ST_Geometry en vez de la representación de texto conocido extendido (WKT).

Por defecto, la variable ST_GEOMETRY_OUTPUT_FORMAT se configura como TYPE, que significa que se devuelve una representación hexabinaria. Es necesario para crear una copia de seguridad útil de la geodatabase. Únicamente debe cambiar esta variable a ST_GEOMETRY si desea mejorar el rendimiento de la consulta SQL. Si configura esta variable porque planea hacer varias consultas espaciales de SQL, asegúrese de quitarla después de terminar las consultas, a continuación reinicie el cluster de base de datos de PostgreSQL.

La variable se debe configurar en el equipo donde se ejecuta PostgreSQL.

Para un SO Linux, configure la variable para el shell desde donde emite las consultas SQL. Para el shell bash, la sintaxis es la siguiente:

ST_GEOMETRY_OUTPUT_FORMAT=ST_GEOMETRY

Para un shell csh, la sintaxis es

setenv ST_GEOMETRY_OUTPUT_FORMAT ST_GEOMETRY

En Windows, cree una variable de entorno del sistema en las propiedades del sistema.

Nombre de la variable: ST_GEOMETRY_OUTPUT_FORMAT

Valor de la variable: ST_GEOMETRY

Después de configurar la variable, debe reiniciar el cluster de base de datos de PostgreSQL.

9/11/2013