On Fri 12 Sep 2014 14:12:36 Leslie León Sinclair escribió:
> Gracias ya entré, un poco lento el https pero es algo, leeré un poco y 
> después comento mis resultados...

Dejame ver si te ahorro un poco de trabajo, aunque no estan las figuritas, pero 
bueno es algo..

Unidad II – Instalación de PostgreSQL
Objetivo: Que el alumno conozca las bases y los pasos para lograr una 
instalación exitosa de la
PostgreSQL por diferentes medios y en diferentes plataformas.
1 . 1 Instalación de PostgreSQL en GNU/Linux
La instalación de programas en GNU/Linux es un tema amplio y donde se debe 
tener en cuenta varias
cosas antes de instalar cualquier programa. El mecanismo de instalación 
depende de la distribución en
la que pretendemos instalar la PostgreSQL. 
La mayoria de las grandes distribuciones que existen en el mercado (Red Hat, 
Debian, Slackware,
Gentoo, Suse y Mandrake) disponen en sus CD's de instalación los paquetes para 
instalar una
PostgreSQL. Si no queremos complicar mucho las cosas podemos simplemente 
instalarlo desde el
administrador de paquetes correspondiente. Pero en cambio si queremos la 
ultima versión disponible y
deseamos personalizarla al máximo tendremos que compilar los fuentes.
1. 2 Instalación de programas en GNU/Linux, consideraciones.
Antes de instalar la PostgreSQL tenemos que conocer como se instalar cosas en 
GNU/Linux.
Podemos clasificar a las distribuciones GNU/Linux según su sistema de 
instalación de paquetes, si lo
hacemos tendremos 3 grandes ramas.
Basadas en paquetes Rpm
Red Hat / Fedora
Mandrake
Suse
Basadas en paquetes Deb
Debian
Knoppix
Rxart
Basadas en archivos Fuentes
Gentoo
Ututo
Se debe conocer que sistema de paquetes tiene su distribución antes de 
instalar algo por que no
podemos instalar Rpm en Debian por ejemplo, para instalar en Debian debemos 
buscar los paquetes
Deb. Lo mismo sucede al revez, no podemos instalar Deb en Red Hat.
Además, si tenemos Red Hat, debemos buscar los paquetes Rpm para Red Hat por 
que puede ser que
los paquetes Rpm de Mandrake fallen al instalarse en Red Hat. Con esto 
pretendo decir que cada
distribución tiene sus propios paquetes, así que si eligen este mecanismo de 
instalación lo primero que
deben hacer el buscar el paquete para la distribución que tienen instalada.
Si no quieren pelear con esto lo que pueden hacer es compilar el programa 
desde su código fuente, para
ello deben descargarse el código fuente del programa, verificar que se cumplen 
los requerimientos y
realizar una compilación, igualmente este mecanismo se puede complicar si el 
proceso de compilación
nos arroja un error.
Debido a la variedad de sistemas de instalación solo veremos en detalle como 
instalar la PostgreSQL
desde código fuente, pero al final veremos brevemente como usar los otros 
mecanismos.
1. 3 Instalación por medio de los Fuentes
Lo primero que se debe hacer es descargarse los fuentes, lo puede hacer desde 
la sección downloads de
la pagina oficial www.postgresql.org. Al momento de escribir esta documentación 
la ultima versión
disponible es la 8.1.3 y el paquete se llama postgresql­8.1.3.tar.bz2.
Antes de empezar la instalación debemos crear el usuario postgres, este 
usuario se usará para asignar
los permisos de los archivos en el file system y lanzará el demonio con sus 
permisos. Se puede llamar
de otra manera pero por lo general se lo llama así.
Para crearlo usaremos el comando useradd y para asignarle una contraseña 
passwd. La secuencia de
comandos es la siguiente.
#useradd postgres
#passwd postgres
Enter new UNIX password:
Retype new UNIX password:
passwd: contraseña actualizada correctamente
Con eso ya tenemos el usuario, lo que haremos ahora es descomprimir el archivo 
con los fuentes que
descargamos de internet. Para ello usamos el comando tar.
#tar jxvf postgresql­8.1.3.tar.bz2
Al terminar de descomprimir nos quedara un directorio llamado postgresql­
8.1.3, entramos adentro de
dicho directorio con el comando cd.
Una vez allí adentro lo que debemos hacer es preparar el archivo de 
configuración ejecutando el
comando configure. Aquí se deben pasar los flags de compilación para lograr una 
postgres
personalizada según nuestras necesidades. Para ver los flags de compilación 
pude ver el archivo
INSTALL dentro del mismo directorio. Ejecutaremos el configure sin flags.
#./configure
Nótese el uso de ./, esto es por que el comando configure esta en el directorio 
y no el el Path del
sistema. Configure es propio del archivo fuente y cada paquete de fuente trae 
su propio configure.
Después que termino de configurar y si no fallo se debe proceder a la 
compilación. Para ello usamos el
comando make. 
#make
Este se alimenta de la salida de configure y realiza la compilación. Cuando 
termine si no nos devuelve
errores procederemos a la instalación con make install.
#make install
 
Ahora tenemos instalados los archivos de la postgres. Nos resta configurar el 
entorno para esto
debemos exportar una variable de entorno, $ LD_LIBRARY_PATH . Si realizaron 
una instalación por
defecto estas estaran en '/usr/local/pgsql/lib', así que deberán añadir al 
final del archivo /etc/profile la
siguiente linea.
export  LD_LIBRARY_PATH=/usr/local/pgsql/lib
Ahora lo que vamos a hacer es crear el cluster, lo primero que debemos hacer 
es crear el directorio en
donde queremos que se guarden las bases, por lo general 
'/var/lib/postgres/data', poner como dueño del
directorio al usuario postgres y loguearnos como el. Por ultimo usamos el 
comando initdb para iniciar
el cluster. La secuencia de comando de todo esto es la siguiente.
#mkdir /var/lib/postgres
#mkdir /var/lib/postgres/data
#chown postgres.postgres /var/lib/postgres/data
#su – postgres
$initdb ­d /var/lib/postgres/data
Si todo nos sale bien nos aparecerá un mensaje que dice “Success”.
Ya tenemos la postgres lista para usar, lo único que falta es configurar los 
scripts de arranque para que
se inicie junto con el sistema operativo.
Nos logueamos como root y debemos ir al directorio de los fuentes, mas 
precisamente al directorio
postgresql­8.1.3/contrib/start­scripts/, y copiar el archivo linux, que es el 
script que maneja el demonio
en linux, al directorio /etc/init.d/ de la siguiente manera.
#cp linux /etc/init.d/postgres
Debemos asignarle permisos de ejecución con chmod
#chmod +x /etc/init.d/postgres
Y para finaliza ejecutamos el comando chkconfig para configurara en que momento 
se debe iniciar y
apagar.
#chkconfig ­add postgres
Con esto finalizamos la instalación, el paso siguiente será configurar el motor 
y los metos accesos a los
usuarios, pero eso le veremos más adelante.
1.4 Extras
En esta sección veremos muy brevemente como se instalaría con los paquetes 
precompilados en cada
tipo de distribución.
1.4.1 Instalación por Rpm
Supongamos que tienen instalado Suse y optaron por instalar los paquetes por 
medio de Rpm. En los
CD's de instalación seguramente están los paquetes de la PostgreSQL pero 
ustedes deciden descargarse
de internet la ultima versión. Al encontrarla la descarga directamente a su 
home y el nombre del
archivo es postgresql­8.3­no­arch.rpm.
Entonces para instalarlo deben entrar al sistema como el usuario root y 
ejecutar el siguiente comando.
#rpm ­Uvh postgresql­8.3­no­arch.rpm
Este comando comenzará el proceso de instalación, copiara todos los archivos 
binarios, crea el usuario
postgres y configurará los archivos de inicio del demonio, algunos paquetes 
también crean el cluster.
1.4.1 Instalación en sistemas Debian
Debian cuenta con uno de los sistemas de instalación de programas mas 
eficientes del mundo, este se
llama el apt. Consiste en que existen servidores en internet en los que se 
almacenan todos los paquetes
de las diferentes versiones de Debian y cuando alguien desea instalar algo 
automáticamente se descarga
de los servidores los paquetes y los instala. 
Para instalar un programa se utiliza el comando “apt­get install programa...”, 
en este caso para instalar
la PostgreSQL se deberá ejecutar el siguiente comando.
#apt­get install postgresql­8.0
1.4.1 Instalación en sistemas Gentoo
Si son usuarios de Gentoo no deberían estar mirando esta documentación de como 
hace una instalación
por que me imagino que estarán cerca de ser unos expertos en GNU/Linux.
Gentoo trabaja casi de igual manera que Debian, posee servidores en internet 
con los paquetes de
instalación y cuando uno pretende instalar algo se los descarga 
automáticamente. La principal
diferencia es que este sistema no se descarga paquetes precompilados, se 
descarga los códigos fuentes y
los compila para esa maquina.
Para instalar programas se usa el comando “emerge”, en el caso de la 
PostgreSQL sería de la siguiente
manera.
#emerge postgresql
2 Instalación en Windows
2.1 Concideraciónes 
Antes de comenzar la instalación de PostgreSQL en Windows se debe tener en 
cuenta lo siguiente.
Disponer de Windows XP o 2000.
Tener una partición NTFS, no se puede instalar en Fat.
Estar logueado como usuario con privilegios.
Cerrar todos los programas actualmente en uso.
Seguir al pie de la letra el siguiente instructivo.
2.2 ­ Selección del Idioma
Lo primero que se debe hacer es seleccionar el idioma del asistente de 
instalación, hasta la versión
existente a la hora de escribir este material no se encontraba disponible el 
idioma español, lo más
entendible es ingles así que veremos el ejemplo en este idioma.
Luego de seleccionar el idioma nos recomendara cerrar todos los programas que 
estemos ejecutando,
seleccionamos siguiente.
A continuación nos muestra un mensaje con las Reléase Notes de la ultima 
versión, las reléase notes
son los cambios y características nuevas de la versión que estamos instalado, 
después de leer hacemos
clic en siguiente.
2.3 ­Selección de Paquetes a instalar
La siguiente pantalla nos pregunta que es lo que deseamos instalar, lo único 
que se instala por defecto
es el motor, todas la herramientas adicionales son opcionales. Este instalador 
para Windows nos provee
de una amplia gama de herramientas de mucha utilidad, veremos una por una las 
opciones.
La primera opción es “Data Directory”, esta especifica que se ejecute el initdb 
para inicializar el cluster
inicial, siempre debe ser elegida.
“Nacional Language Support” agrega soporte multi lenguaje a los mensajes 
emitidos por la Postgres,
por defecto solo arroja mensajes en Ingles. Puede ser utilizado con el psql.
“Postgis” es un conjunto de tipos de datos y funciones para sistemas GIS 
(Geographic Information
Sistems), estos son sistemas para guardar y manipular información geográfica. 
No existe ningún
sistema de Base de Datos con mejor soporte para este tipo de sistema que la 
Postgres. Si no trabajan, o
no pretenden aprender, sobre sistemas GIS no elijan esta opción.
Entre las interfaces de usuarios tenemos el archiconocido psql, consola 
interactiva de tipo textual, ideal
para fanáticos de las consolas, para maquinas con pocos recursos y para 
administración remota vía
Internet dado que consume poco ancho de banda.
La otra opción es pgAdminIII, uno de los clientes visuales mas completos que 
andan dando vuelta
alrededor de la Postgres, es muy sencillo de usar y ayuda mucho a la hora de 
crear Funciones y
Triggers. La recomendación es que instalen las dos opciones dado que una es 
buena para algunas cosas
y la otra es buena para otras cosas, entre ambas se compensan.
Continuando con las opciones tenemos que el instalador nos trae un conjunto de 
drivers para
conectarnos desde las aplicaciones que desarrollemos. 
 JDBC driver es el driver para conectarnos desde Java.
 Npgsql es un Driver ADO.NET para conectarnos desde aplicaciones .NET.
 ODBC y OLEDB son drivers para conectarnos desde cualquier lenguaje y 
plataforma de desarrollo.
 Igualmente estas no son las únicas opciones para conectarnos a la postgres 
desde nuestras aplicaciones
pero son las más comunes.
Documentación, nos instala una carpeta con toda la documentación oficial de la 
actual versión en
formato HTML en ingles, esta documentación esta muy completa y abarca todos 
los aspectos que se
deben conocer sobre el motor. El material de este curso esta basado en un 85% 
sobre dicha
documentación.
Por ultimo trae los paquetes para Development, es decir desarrollo. Con estos 
paquetes podemos
desarrollar funciones más complejas y extender las funcionalidades de la 
postgres a nuestras
necesidades con funciones externas al motor desarrolladas en C o C++, las 
librerías que trae son
compatibles con Visual C++ de Microsoft.
Este aspecto de la Postgres en muy avanzado y escapa de los objetivos del 
curso, así que no podremos
abordar mucho sobre este tema pero en la documentación oficial encontraran un 
capitulo llamado
“Extendiendo PostgreSQL” donde se explica detalladamente como hacer esto. Por 
ahora no elegiremos
esta opción.
Luego de terminar de elegir los paquetes debemos hacer clic en siguiente.
2.4 ­ Instalando el Servicio
Lo siguiente que nos pregunta es si deseamos que la postgres corra como un 
servicio de Windows, que
es lo mas práctico dado que podemos administrarlo desde la Magnament Console 
de Windows. 
Para el curso elegiremos esta opción, en caso de no querer que sea así 
destilden la opción “install as a
service”, el instalador pasara a copiar los archivos y dejara en nuestras 
manos todas las tareas restantes.
Como vimos previamente en el curso, el servicio o demonio de la PostgreSQL, el 
postmaster, debe ser
inicializado por un usuario sin privilegios de administrador, comúnmente 
llamado postgres. 
Este instalador nos pregunta quien será el usuario que ejecutará el servicio, 
en caso de no haberlo
creado todavía el usuario, el instalador lo crea por nosotros, solo debemos 
poner el nombre de usuario
en “Account Name” y la contraseña en “Password”, de no poner una contraseña se 
le asignara una
automáticamente. Aparecera la siguiente Pantalla pidiendo la confirmación para 
crear el usuario.
Si ya creamos el usuario con el que deseamos iniciar el servicio solo debemos 
poner el nombre del
usuario, el instalador se verificará la existencia del mismo y no creara uno 
nuevo.
2.5 ­ Iniciar el Cluster
Ahora debemos configurar los parámetros para iniciar el cluster, en caso de no 
querer que el instalador
inicialice el cluster solo se debe destilar la opción “Initialize database 
cluster”.
Lo primero que nos pregunta es el puerto en el cual escuchará el servidor, así 
como la MySql escucha
en el puerto 3306 y el SQL Server escucha en el 1433, por defecto la Postgres 
siempre escucha en el
5432, pero se puede poner que escuche en otro puerto.
Addreses lo que hace es habilitar la escucha en dicho puerto, si no la activan 
solo se podrán conectar al
Motor desde la maquina local.
Locale es el lenguaje en que se mostraran los mensajes, y Encoding es la 
formato en que se guardarán
las cosas, a menos que sean unos expertos dejen estas dos opciones por 
defecto.
“Super username” es el nombre de la cuenta del súper usuario del motor, es 
creada cuando se inicializa
el cluster. No olviden poner una contraseña.
2.6 ­ Selección de los Lenguajes Procedurales.
En esta versión solo trae para elegir PL/pgsql, pero seguramente próximas 
versiones traerán mas
lenguajes posteriormente. Elijan si o si instalar el PL/pgsql por que mas 
adelante en el curso lo
usaremos para hacer Procedimientos de Almacenado.
2.7 ­ Selección de Módulos Adicionales
En esta etapa debemos elegir, si queremos, módulos adicionales a los 
estándares. No conozco para que
sirven todos los módulos, por lo general son funciones y conjunto de tipos de 
datos y reglas que se
instalan en la template1. Pueden ser instalados manualmente mas adelante.
Algunos módulos interesantes son:
Cube: Implementación para cubos de decisión.
Time Travel: Permite ver los datos que la base tenia guardados hace X tiempo 
atrás, aunque ya se
hallan borrado, es muy peligrosa y ocupa mucho espacio en el disco.
TSearch2: Permite búsquedas dentro de textos.
ISBN y ISSN: Tipos de datos para manipular ISBN e ISSN.
Large Object: Extención para manejar BLOB, útil para DataWhereHousing.
2.8 ­ Finalizando
Después de haber terminado de elegir los módulos adicionales pedirá 
confirmación para comenzar la
copia de los archivos.
Nos mostrara una barra de progreso y no indicara lo que esta haciendo.
Después nos aparecerá el siguiente mensaje que indica que el cluster esta 
siendo inicializado.
Cuando esta operación termine registrará el servicio y terminara la 
instalación mostrándonos el
siguiente mensaje.
Hacemos clic en finalizar y podemos empezar a trabajar.
3 Archivos de Configuración
Como la gran mayoría de las herramientas Unix, PostgreSQL se configura a partir 
de tres archivos de
configuración. Estos archivos de configuración se encuentran en el directorio 
en 
donde inicializamos el
cluster (por lo general /usr/lib/pgsql/data).
El primer archivos que veremos es el postgresql.conf, este es el archivo de 
configuración de los
parámetros globales del motor. Los otros dos archivos vienen juntos de la 
mano, el pg_hba.conf
configura los métodos de acceso para los usuarios, el pg_ident.conf es la tabla 
de mapeo para los
usuarios que tienen configurado el método ident en el pg_hba.conf, ya lo 
veremos esto con más detalle.
En esta unidad solo trataremos el archivo postgresql.conf, pero en el capitulo 
de administración de
usuarios veremos con detealle el pg_hba.conf y el pg_ident.conf.
3.1 Sobre los archivos de configuración
Antes que nada dejaremos claro algunas consideraciones sobre los archivos de 
configuración. 
Lo primero a tener en cuenta es que las líneas que tengan un # (numeral o 
sharp) en el comienzo son
comentarios, estas líneas no son procesadas, en vez de borrar una línea es 
mejor comentarla.
Los parámetros consisten básicamente en “nombre = valor”, salvo algunas 
excepciones.
Tengan en cuenta siempre la identación del archivo, sino se puede hacer 
ilegible con el tiempo.
Por lo general todos los archivos de configuración poseen un comentario acerca 
de los parámetros que
contienen y para que sirven, lean siempre estos comentarios.
Antes de cambiar algún valor recuerden hacer una copia de los archivos de 
configuración.
En Linux pueden usar el Vim  para editar los archivos, este editor colorea la 
sintaxis del archivo
haciendo más fácil su lectura.
Para que los cambios en el archivo de configuración tengan efectos se debe 
reiniciar el servidor.
3.2  postgresql.conf
Este es el archivo de configuración más importante de la PostgreSQL, desde aquí 
se pueden manipular
todo el motor. Las variables que configura este archivo pueden pasarse a mano a 
la hora de iniciar el
servicio, pero es recomendado manejar los parámetros desde este archivo de 
configuración.
Esta compuesto por varias secciones, cada sección posee un conjunto de 
parámetros referidos a alguna
característica en particular del motor. Las secciones del archivo son las 
siguientes.
Secciones
 FILE LOCATIONS: Path de los archivos de la PostgreSQL.
 CONNECTIONS AND AUTHENTICATION: Parámtros de Conexión.
 RESOURCE USAGE (excepto WAL): Establece los recursos que puede usar.
 WRITE AHEAD LOG: Parámetros del Protocolo Wal (ver Transacciones).
 QUERY TUNING: Parámetros para el Optimizador de Consulta.
 ERROR REPORTING AND LOGGING: Establece cuantos y que tipo de mensajes 
mostrar.
 RUNTIME STATISTICS: Establece que debe registrar para generar estadísticas.
 CLIENT CONNECTION DEFAULTS: Parámetros de conexión.
 LOCK MANAGEMENT: Establece parámetros para el manejo de Bloqueos (ver
Transacciones).
 VERSION/PLATFORM COMPATIBILITY: Parámetros de compatibilidad para bases
heredadas que se migraron a versiones actuales.
No veremos en detalle cada uno de los parámetros del motor dado que esto sería 
muy aburrido, solo
veremos los parámetros más importantes. Pero entre los recursos del curso 
encontrarán un PDF en
ingles llamado “Postgresql.conf detalle de Parámetros” que detalla todos los 
parámetros de este
archivo.
3.2.1 FILE LOCATIONS
Estas variables por defecto toman las mismas que se generaron al momento de 
crear el cluster, pero
suelen modificarse en caso de querer realizar cambios o utilizar otros cluster 
creados posteriormente o
previamente al cluster actual. Las más importantes de esta sección son.
data_directory: especifica el directorio donde se almacena el cluster.
hba_file: especifica la ubicación del archivo pg_hba.conf
ident_file: especifica la ubicación del archivo pg_ident.conf
3.2.2 CONNECTIONS AND AUTHENTICATION
Esta sección es muy importante, aquí se establece por ejemplo el puerto TCP en 
el que escuchara las
peticiones el motor. También se establece si se aceptaran conexiones desde 
otras maquinas. Lo primero
que suele suceder después de instalar una PostgreSQL es que no podemos 
conectarnos con ninguna
herramienta que no sea la consola interactiva, esto sucede por que por defecto 
esta no escucha
peticiones TCP, solo se puede conectar a través de sockets, y casi todas las 
herramientas de terceros
pretenden conectarse por puertos TCP. Para abrir un puerto TCP debemos cambiar 
el valor de
listen_addresses, esta variable especifica una lista de conexiones a las que se 
le permite conectarse,
pueden ponerse direcciones IP como nombres de Host estos deben ir separados 
por comas simples. El
valor de esta variable por defecto es localhost, es decir la maquina que tiene 
el servidor, pero en
algunas versiones esta línea aparece comentada para evitar conexiones no 
permitidas. En caso de querer
aceptar conexiones de cualquier dirección de la red se puede  poner un ‘*’, 
úsese con mucho cuidado
puede traer problemas de seguridad.
Otras variables importantes son:
port: Establece el número de puerto TCP en el que se escuchará, por defecto 
5432.
max_connections: Número máximo de conexiones permitidas, por defecto se 
permite 100, pero esto
dependerá del hardware del servidor, se estima que por lo menos se necesita 
como mínimo 500 bytes de
memoria por cada conexión. Es decir que aproximadamente, si se establecen las 
100 conexiones se
llegara a consumir 50 mb de RAM.
3.2.3 RESOURCE USAGE
Aquí configuramos los recursos que le permitiremos utilizar. De esta 
configuración depende el
funcionamiento óptimo del motor. Esta sección a su vez esta dividida en otras 
tres subsecciones.
Veamos cada una de estas en detalle.
Memoria
shared_buffers: Establece el número de buffers de memoria compartida usados por 
el servidor de base
de datos. Como mínimo deberá ser de 2 x max_connections. Por defecto él numero 
es 1000, pero suele
suceder que el kernel del Sistema Operativo subyacente no soporte tantos y al 
hacer el initdb este
proceso falle, para solucionar esto se deberá recompilar el kernel del S. O. o 
bajar él numero de buffers.
Cada buffer tiene un tamaño de 8 kb, es decir que por defecto consumé 8 mb de 
memoria. El consumo
de memoria de los buffers nunca debe ser mayor a 1/3 de la memoria física.
work_mem: Establece la cantidad de memoria que será usada para ordenamiento y 
tablas de Hash
antes de pasar a archivos temporales de disco. Antes de cambiar este valor se 
debe tener en cuenta que
varias operaciones de ordenamiento o que usen tablas de Hash pueden estar 
corriendo paralelamente,
cada una de estas operaciones consumirá su work_mem antes de pasar a disco. 
Esto producirá que el
tamaño de work_mem aumente considerablemente, imagínese el peor de los casos 
en que las 100
conexiones por defecto realicen simultáneamente operaciones de ordenamiento, 
tendrían 100 x 1 mb =
100 mb de memoria de física utilizada para los ordenamientos.
maintenance_work_mem: Estable la cantidad de memoria que se utilizara en 
operaciones de
mantenimiento. Por defecto la cantidad asignada es de 16 Mb, asignarle mas 
memoria solo agilizará los
procedimientos de VACUUM y DUMP, es recomendado dejarlo como esta.
Free Space Map – Mapa de Espacio Libre
max_fsm_pages: Establece el número de paginas de disco para el cual se llevara 
un registro de dicho
espacio en el mapa de espacio libre compartido. El tamaño por defecto es 2000, 
pero es recomendado
para bases grandes que sea 16 x max_fsm_relations.
max_fsm_relations:  Establece el número máximo de relaciones para el cual se 
llevara un registro de
dicho espacio en el mapa de espacio libre compartido.
Kernel Resource Usage
max_files_per_process: Establece el número máximo de archivos que puede abrir 
un proceso.
preload_libraries: Indica las librerías dinámicas que deben cargarse al 
momento de iniciar el servidor,
se indican las librerías por lo general de la siguiente manera 
’$libdir/plpgsql:plpgsql_init' donde en este
caso las librerías son para el lenguaje procedural PL/pgSQL.
Vacumm Delay
El conjunto de estos valores modifica los procesos de vacumm, solo establecen 
parámetros para tratar
de optimizar el mantenimiento de la base. Por lo general no se suelen 
modificar.
vacumm_cost_delay: Es el tiempo en milisegundos que el proceso debe esperar si 
el costo de
realizarlo excedió los limites aceptables.
vacumm_cost_page_hit: Es el costo de hacer un vacumm sobre un buffer encontrado 
en la cache de
buffers compartida.
vacumm_cost_page_miss: Es el costo de hacer un vacumm sobre un buffer no 
encontrado y que debe
ser recuperado del disco.
vacumm_cost_limit: Es el costo que cuando un proceso de vacumm lo excede causa 
que este sea
pausado durante vacumm_cost_delay tiempo.
Background Writer
Esta parte del RDBMS lo que hace es bajar un porcentaje de paginas sucias, es 
decir que se
modificaron recientemente, de la memoria al disco. Lo que hace básicamente es 
cada cierto intervalo de
tiempo recupera un porcentaje de paginas y lo descarga al disco. Desde esta 
sección del archivo de
configuración se puede manipular los parámetros de este mecanismo.
bgwriter_delay: Tiempo del intervalo.
bgwriter_percente: Porcentaje de paginas que serán bajadas al disco.
bgwriter_maxpages: Numero máximo de paginas que serán bajadas al disco.
3.2.4 WAL Options
WAL es el protocolo para realizar transacciones, se verá con más detalle en 
capítulos posteriores. Este
protocolo tiene un conjunto de parámetros manipulables desde este archivo de 
configuración para hacer
al motor más robusto, confiable y lento, o en el otro extremo más relajado, 
menos confiable y rápido.
fsync: Por defecto esta opción es verdadera (true), lo que indica es que el 
RDBMS envié la llamada del
sistema fsync() en varios lugares para asegurar la persistencia de los datos 
que están en memoria en el
disco, es decir que los cambios sean permanentes. Esto asegura la consistencia 
del motor todo el
tiempo.
Esta opción hace que el motor tenga una penalización de performance, dado que 
por cada Commit se ve
obligado a hacer un fsync(), debe bajar los cambios al disco. Si esta 
desactivado el sistema operativo
retrasa las escrituras al disco hasta el momento en que calcule que es el más 
optimo para realizar la
operación. Esto mejora significantemente la performance de la PostgreSQL pero 
no se puede asegurar
la consistencia del cluster ante un imprevisto en el Sistema Operativo, 
cualquier error del sistema
operativo puede causar la perdida de información y hasta la perdida del 
cluster por completo.
wal_sync_method: Este parámetro indica que señal es enviada para realizar la 
descarga de memoria al
disco, la señal a emplear depende totalmente del sistema operativo de base. No 
todas las señales
disponibles en el archivo de configuración funcionarán en todos los sistemas 
operativos.
Si pretenden cambiar este parámetro es recomendada una profunda lectura de las 
señales del sistema
operativo y disponer del tiempo para correr test comparativo y de fallas.
Por defecto se utiliza fsync que es una señal elemental y esta disponible en 
todos los sistemas
operativos que digan cumplir algo del estándar POSIX.
wall_buffers: Establece él numero de buffers para mantener información de WAL, 
por defecto trae 8
buffers. Modificar este valor no mejorara la performance del motor a menos que 
se procesen
constantemente transacciones enormes, cosa poco común, pero si ese es el caso 
no se debe exceder de
16 ­ 32.
commit_delay: Indica el tiempo que debe esperar una transacción commited antes 
de hacer un fsync.
Este valor es por defecto cero, pero con un valor mayor lo que puede pasar es 
que se haga fsync para un
conjunto de transacciones que terminaron dentro del delay de otra transacción. 
En la figura pueden ver
que T1 termina y espera, mientras tanto termina T2 y T3 que también entran en 
espera, cuando termina
el tiempo de espera de T1 se envía el fsync para esta y también para T2 y T3, 
es decir se uso un fsync
para 3 transacciones.
Esta configuración es realmente útil en el caso de que la carga sean muchas 
pero pequeñas
transacciones.
 
commit_siblings: Este valor esta profundamente relacionado con el anterior, en 
caso de usar
commit_delay este parámetro establece él numero máximo de transacciones 
concurrentes dentro de un
commit_dely. Si alguna transacción esta esperando su fsync y se encuentran 
abiertas él numero máximo
de transacciones posibles no se pueden abrir nuevas transacciones, estas deben 
esperar a que terminen
las anteriores.
Se debe tener en cuenta que entra más grande sea este numero mayor será la 
probabilidad de que se
finalicen transacciones dentro del commit_delay. Pero un exceso en él numero 
transacciones abiertas
causa mas inseguridad ante fallos en el sistema.
Checkpoints
La secuencia de transacciones se registran en el archivo xlog, pero en un 
determinado momento esto se
vuelca a los archivos de datos todo lo que a sido logeado, este momento se 
denomina checkpoint.
Es un punto del archivo xlog que asegura que todo lo registrado antes de este 
checkpoint sé a guardado
satisfactoriamente en los archivos de datos.
La PostgreSQL, mas exactamente el proceso escritor en segundo plano o 
background writer process,
automáticamente crea checkpoints cada un determinado segmento o cierta 
cantidad de tiempo, esto se
configura con los parámetros checkpoint_segment y checkpoint_timeout 
respectivamente. Este
parámetro es uno de los que hacen variar las prestaciones del RDBMS 
notablemente, se debe estudiar
bien el escenario en el que corre el motor.
checkpoint_segment: Establece la máxima distancia entre checkpoints dentro de 
un segmento del
archivo de log. Por defecto es 3, en caso de sistema con mucha carga de 
escritura suele recomendarse 8,
en bases donde se realizan escrituras de varios GB se recomienda 128, también 
es necesario contar con
gran espacio para el archivo de log.
checkpoint_timeout: Establece el tiempo máximo entre dos checkpoints. Por 
defecto es 300
milisegundos, en sistemas con mucha carga se suele poner en 30 minutos.
Estos dos valores se deben configurar juntos, si uno aumenta el otro también y 
viceversa. No tiene
sentido hacer crecer el checkpoint_segment y dejar el checkpoint_timeout como 
estaba, dado que
relativamente trabajara igual.
3.2.5 Resumen
Quedaron muchos parámetros por ver los veremos a medida que avancemos con los 
temas, esto solo
fue una visión panorámica de las cosas más fundamentales.
4 Manejo del Servicio PostgreSQL
Como ya hablamos anteriormente la Postgres corre dentro del sistema operativo 
como un servicio, esto
es un programa que corre en segundo plano y espera peticiones para realizar 
alguna tarea en particular.
El servicio de la Postgres se llama Postmaster, y tanto en linux y en windows 
se administran de manera
diferentes.
4.1 Manejo en Linux
Suponiendo que tiene un sufijo xxx, que es el numero de versión por lo general.
Para dar de baja el servicio
#/etc/init.d/postgresql-xxx
stop
Para dar de alta
#/etc/init.d/postgresql-xxx
start
Para reiniciarlo
#/etc/init.d/postgresql-xxx
restart
Para ver su estado
#/etc/init.d/postgresql-xxx
status
En caso de usar RedHat, Suse, Mandrake se puede usar el comando service de la 
siguiente manera.
#service postgresql-xxx {stop|start|restart|status}
4.2Manejo en Windows
Para administrar el servicio en windows debemos ir a inicio, panel de control, 
herramientas
administrativas, servicios.
Una vez aquí adentro solo deben buscar el servicio postgresql-xxxx, y hacer 
sobre el click derecho,
propiedades.
En esta pantalla les aparecerá un conjunto de opciones para Para, Iniciar, 
Reiniciar el servicio, Además
les brindara información sobre el estado del mismo.


------------ 
Salu2, Ulinx
"En un problema con n ecuaciones
siempre habrá al menos n+1 incógnitas"
Linux user 366775

-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a