Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Elegimos un
directorio donde se
almacenaran los
datos. Y le daremos
siguiente.
La mayor parte del tiempo utilizar el primero, pero el segundo puede ser til si
tiene un servidor que no quiere detener. El tercer nivel es til en situaciones
especiales. Puede saber de qu nivel es cada opcin mirando la columna
"context" de la vista pg_settings.
Notas importantes acerca de postgresql.conf
Las lineas con # son comentarios que no tienen efecto. Para una base de
datos nueva, esto significar que se est usando el valor por defecto,
listen_addresses
Por defecto, PostgreSQL solo responde a conexiones provenientes desde
localhost. Si desea que su servidor fuera accesible por otros sistemas via red
de TCP/IP, debe cambiar el valor por defecto de listen_addresses. Lo ms usual
es configurarlo de esta manera:
listen_addresses = '*'
Luego, controlar quienes no pueden conectarse a travs del
archivo pg_hba.conf .
max_connections
max_connections aplica la cantidad mxima de conexiones de clientes. Esto es
muy importante para algunos de los parmetros siguientes (particularmente
work_mem) porque hay recursos de memoria que pueden ser ubicados por
cliente, entonces el nmero mximo de clientes puede sugerir el mximo de
memoria utilizada posible. Generalmente, postgresql en un buen hardware
puede soportar unos pocos cientos de conexiones. Si desea tener por miles,
debe considerar utilizar connection pooling software para reducir la sobrecarga
de conexin.
shared_buffers
La configuracin del parametro shared_buffers determina cuanta memoria est
dedicada a PostgreSQL para datos en cach. Por defecto es bajo porque en
algunas plataformas (como versiones viejas de solaris y SGI) teniendo valores
altos requieren acciones invasivas como recompilar el kernel. Si tiene un
sistema con 1GB o ms de RAM, un valor inicial razonable es un 1/4 de dicha
memoria. Si tiene menos deber calcular cuidadosamente este valor de
acuerdo al sistema operativo, cercano al 15% en los casos ms comunes.
This error usually means that PostgreSQL's request for a shared memory
segment exceeded your kernel's SHMMAX parameter. You can either
reduce the request size or reconfigure the kernel with larger SHMMAX.
To reduce the request size (currently 415776768 bytes), reduce
PostgreSQL's shared_buffers parameter (currently 50000) and/or
its max_connections parameter (currently 12).
checkpoint_segments checkpoint_completion_target
PostgreSQL escribe las nuevas transacciones a la Base de Datos en un archivo
llamado segmentos del WAL que son de 16MB de tamao. Todo el tiempo el
valor de checkpoint_segments escrito, por defecto 3, ocurre un 'checkpoint' o
punto de chequeo. Estos pueden ser un recurso intensivo, y en un sistema
moderno hacer uno cada 48 MB puede ocasionar cuellos de botella.
Estableciendo este valor un poco ms alto mejorara este inconveniente. Si
est corriendo en una configuracin pequea, debera establecer esta al menos
en 10, permitiendo alcanzar los objetivos.
Para sistemas de escritura masiva, valores desde 32 (punto de chequeo cada
512MB) a 256 (cada 128GB) son vas populares. Sistemas muy grandes utilizan
muchsimo ms disco lo que la recuperacin llevara ms tiempo, por lo que
debera elegir en que rango se encuentra comfortable. Normalmente los
valores altos (>64/1GB) son utilizadas para cargas de gran aumento de
volumen. De cualquier manera que elija los segmentos, necesitar un punto de
chequeo por lo menos cada 5 minutos menos que aumente el
checkpoint_timeout (lo que no es necesario en muchos sistemas).
Comenzando con PostgreSQL 8.3, las escrituras del punto de chequeo se
extiende un poco mientras comienza a trabajar en el prximo punto. Puedes
difundir las nuevas escrituras, la reduccin de escribir encima de la media,
incrementando el parametro checkpoint_completion_target a su mximo de 0.9
(con el objetivo de terminar en el 90 % del tiempo antes del proximo
checkpoint) en vez del valor por defecto de 0.5 (terminando cuando el prximo
est en un 50%). Establecerlo a 0 dara algo similar a lo que era en las veriones
ms tempranas. La razn principal de que 0.9 no es el valor por defecto es que
se necesita un valor alto de checkpoint_segments para la difusin funcione
bien. Para mayor informacin de mejoras en el checkpoint vea Checkpoints and
the Background Writer (aprender a mejorar de fondo los parmetros de
escritura particularmente de 8.2 o menores, siendo un reto hacerlo bien).
autovacuum max_fsm_pages,max_fsm_relations
NOTA TRADUCCIN: Vaccum significa 'vaciar' literalmente hablando. El proceso
de VACUUM lo que realiza es una limpieza de tuplas muertas que han sido
marcadas como borradas o modificadas, ya que el motor de base de datos no
las borra inmediatamente de la parte fsica para no sobrecargar las
operaciones normales.
El proceso automtico de Vacuum (autovacuum) realiza una serie de
operaciones de mantenimiento en la base que ud. necesita. Como en 8.3, est
activo por defecto y debera dejarlo as. En 8.1 y 8.2 ud. debe activarlo. Tenga
en cuenta que en esas versiones antiguas, debe configurar sus variables para
uqe tenga un efecto ms rotundo; puede que no haga el trabajo suficiente por
defecto si tiene una base de datos muy grande o realice muchas
actualizaciones en los datos.
default_statistics_target
El software de bases de datos recolecta estadsticas de cada una de las tables
en su base de datos para decidir como se ejecutarn las consultas sobre ellas.
Por defecto, no recolecta demasiada informacin, y si no esta obteniendo
buenos planes de ejecucin particularmente en las ms largas (o variadas)
tablas debera incrementar default_statistics_target y luego correr ANALYZE la
base de datos nuevamente (o esperar al autovacuum que lo haga por ud.).
Mucha gente cree que el valor por defecto para default_statistics_target en
hardware ms moderno debe ser llevado a 100 (de su valor de 10), ya que
comnmente encontrables con RAID de SCSI, sera apropiado dejarlo bajo, con
cual animara al optimizador utilizar rastreos de acceso aleatorios. Algunos
creen que 4.0 es muy alto para el hardware actual, sin embargo no es inusual
en los administradores estandarizar el valor entre 2.0 y 3.0. En algunos casos
este comportamiento es un vestigio de versiones tempranas de PostgreSQL
que tenan el valor random_page_cost muy alto lo que hoy representa a
entorpecer el plan de optimizacin (y establecerlo en 2.0 o mayor era
regularmente necesario). Dado que estas estimaciones de gastos que son slo
eso (estimaciones) no deberan afectar tratar con valores menores.
Pero no es aqu donde debera empezar a buscar problemas en el plan. Tenga
en cuenta que random_page_cost est muy abajo en esta lista (en el final, de
hecho). Si est teniendo planes malos, no debera ser el primero en el que
debera pensar, incluso bajar este valor puede ser efectivo. Sin embargo,
debera confirmar que est trabajando correctamente el autovacuum, que est
recolectando estadsticas asiduamente y que tiene establecidas correctamente
los parmetros de cantidad de memoria en el servidor (todas las cosas
anteriores). Una vez que haya revisado todas estas cosas importantes, y ud.
sigue teniendo malos planes solo luego de eso debera revisar si tener bajo
este valor le sigue siendo til.