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úferes 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 los bloqueos concurrentes y el número de datasets; en otras palabras, si carga 3000 datasets, no tiene que aumentar el valor de max_locks_per_transaction a 3000. Primero anule los comentarios de la propiedad max_locks_per_transaction y aumente su valor a 100 antes de realizar las cargas masivas.
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 podría hacer que la base de datos solicite más memoria compartida que la que el sistema operativo tiene disponible. Para obtener más información sobre el modo de aumentar la configuración de la memoria compartida para el sistema operativo, consulte "Administrar recursos de kernel" en la documentación de PostgreSQL.
cursor_tuple_fraction
El valor de cursor_tuple_fraction se usa en el planificador de PostgreSQL para estimar qué fracción de filas devueltas por una consulta se necesita. De manera predeterminada, cursor_tuple_fraction se define como 0,1 en el archivo postgresql.conf, lo que significa que el primer 10% de las filas (o entidades) del resultado se devuelve con rapidez, pero el resto tarda más en devolverse.
Si desea modificar el porcentaje del conjunto de resultados que muestra el planificador de PostgreSQL cuando se conecta a aplicaciones ajenas a ArcGIS, puede cambiar el valor de la propiedad cursor_tuple_fraction en el archivo postgresql.conf.
Cuando se usa ArcGIS 10.2 o una versión posterior para consultar los datos, se emplea siempre un valor de 1,0, lo que significa que los datos no se muestran hasta que se ha devuelto el 100% del conjunto de resultados. No es posible cambiar el valor de cursor_tuple_fraction en el archivo postgresql.conf cuando se accede a la base de datos a través de ArcGIS. Para cambiar el valor que utiliza ArcGIS, debe definir la variable de entorno cursor_tuple_fraction para la sesión o el sistema.
Mejorar el rendimiento de las consultas espaciales de SQL en aplicaciones de terceros
Cuando se ejecutan fuera de ArcGIS consultas de SQL que devuelven columnas espaciales de ST_Geometry desde una tabla de negocios, se puede aumentar el rendimiento de la consulta si se configura una variable de entorno del sistema, ST_GEOMETRY_OUTPUT_FORMAT, que genere una salida para el tipo ST_Geometry en vez de la representación de texto conocido extendido (WKT).
De manera predeterminada, ST_GEOMETRY_OUTPUT_FORMAT se define como ST_GEOMETRY, lo que significa que se devuelve una representación hexabinaria. Es necesario para crear una copia de seguridad útil de la geodatabase. Puede cambiar esta variable a TYPE 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=TYPE
Para un shell csh, la sintaxis es
setenv ST_GEOMETRY_OUTPUT_FORMAT TYPE
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: TYPE
Después de configurar la variable, debe reiniciar el cluster de base de datos de PostgreSQL.