============================================================
Preguntas y respuestas Frecuentes (FAQ) para PostgreSQL
Plataforma Específica Sun Solaris
Para ser leída en cojunto con las instrucciones de instalación.
============================================================
Última modificación: $Date: 2007/02/27 19:10:19 $
Traducción: $Date: 2008/10/28 12:17:00 $
Contenidos:
1) ¿Que herramientas necesito para compilar e instalar Postgresql en Solaris?
2) ¿Porqué tengo problemas cuando compilo con el soporte OpenSSL?
3) ¿Porque cuando configuro se queja acerca de un testeo de programa fallido?
4) ¿Porque se corrompe a veces mi compilación en 64-bits?
5) ¿Cómo puedo compilar para el mejor rendimiento?
6) ¿De donde puedo descargar los paquetes preparados de Solaris?
7) ¿Como puedo afinar PostgreSQL y Solaris para el rendimiento?
8) ¿Puedo utilizar DTRace para tracear PostgreSQL?
1) ¿Que herramientas necesito para compilar e instalar Postgresql en Solaris??
Necesitarás:
gzip (para instalar la documentación)
GNU Make
GNU Readline library (opcional)
Sun Studio CC or GCC
Puede descargar Sun Studio desde:
http://developers.sun.com/prodtech/cc/downloads/index.jsp
Muchas de las herramientas GNU están integradas en Solaris 10, o están presentes
en el CD que acompaña a Solaris.
Si quiere los paquetes de versiones antiguas, las puede encontrar en:
http://www.sunfreeware.com or http://www.blastwave.org
Si prefiere los fuentes, mire aqui:
http://www.gnu.org/order/ftp.html
Puede compilar tanto con GCC o la suite de compilación de Sun.
Para una mejor optimización de código, el compilador de Sun es el más
recomendado en arquitectura Sparc. Hemos tenido reportes de problemas
utilizando GCC 2.95.1; gcc 2.95.3 o más nuevo es recomendado.
Si está utilizando el compilador de Sun, tenga cuidado de no seleccionar
/usr/ucb/cc; use /opt/SUNspro/bin/cc.
2) ¿Porqué tengo problemas cuando compilo con el soporte OpenSSL?
Cuando compila PostgreSQL con soporte OpenSSL deberá obtener los posibles
errores de compilación en los siguientes archivos:
src/backend/libpq/crypt.c
src/backend/libpq/password.c
src/interfaces/libpq/fe-auth.c
src/interfaces/libpq/fe-connect.c
Esto se debe a un conflicto de espacios de nombre (namespace) entre la
cabecera estándar de /usr/include/crypt.h y la cabecera de los archivos
provistos por OpenSSL.
Actualizando la instalación de OpenSSL a la versión 0.9.6a, corregiría
este problema. Solaris 9 y anteriores tienen una versión de OpenSSL más reciente.
3) ¿Porque cuando configuro se queja acerca de un testeo de programa fallido?
Esto es un caso probablemente del enlazador (linker) de tiempo de ejecución
se vuelve inhabilitado para encontrar alguna biblioteca, probablemente libz,
libreadline o alguna otra biblioteca no estándar como libssl. Para colocarla en
la ubicación correcta, modifique la variable de entorno LDFLAGS, ej.:
LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"
export LDFLAGS
y reinicie el proceso de configuración. Vea la página de las man de ld(1) para
más información.
4) ¿Porque se corrompe a veces mi compilación en 64-bits?
En Solaris 7 o anteriores, la versión 64-bits de libc tiene una rutina vsnprint
con errores, que lleva a un volcado del núcleo errático de PostgreSQL.
La manera más simple es forzando a PostgreSQL usar su propia versión de
vnsprint en vez de la copia de la biblioteca. Para hacer esto, después de ejecutar
'configure', edite un archivo producido por 'configure':
En src/Makefile.global, cambie la linea
LIBOBJS =
para leer
LIBOBJS = snprintf.o
(Posiblemente puede haber otros archivos listados en esta variable. Las otras no son
un problema.)
Reconstruir como lo hace usualmente.
5) ¿Cómo puedo compilar para el mejor rendimiento?
En la arquitectura SPARC, es recomendado Sun Studio para la compilación.
Intente usar la bandera -x05 para generar binarios más veloces.
No utilice ninguna bandera que modifique el comportamiento de las operaciones
de coma flotante y procesamiento de errno (Ej: -fast). Estas banderas pueden
provocar un comportamiento no estándar de PostgreSQL como por ejempĺo el cómputo
de el formato date/time.
Si no tiene una razón para utilizar los binarios de 64-bit en SPARC, utilice
los binarios de la versión de 32-bits. Las operaciones de 64-bits son más lentas
y los binarios de 64-bits son más lentos que la variante de 32-bit. Por otra parte,
el código 32-bit en la familiar de CPU AMD64 no es nativo, y es por eso que el
código de 32-bit es significativamente más lento en esta familia de CPU.
6) ¿De donde puedo descargar los paquetes preparados de Solaris?
PostgreSQL viene incluido con Solaris 10 (para la actualización 2). Los
paquetes oficiales están disponibles en
. Los paquetes para versiones
más antiguas de Solaris (versiones 8, 9) peuden ser obtenidas de
or .
7) ¿Como puedo afinar PostgreSQL y Solaris para el rendimiento?
Algunos trucos pueden encontrarse aqui:
http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp
Este artículo está planteado en una plataforma T2000, pero muchas de las recomendaciones
pueden ser útiles en otro hardware con Solaris.
8) ¿Puedo utilizar DTRace para tracear PostgreSQL?
Si, vea el capítulo "Monitoreando la Actividad de la Base de Datos" (Monitoring Database
Activity) en la documentación para más detalles.
Puede encontrar aún más información aquí:
http://blogs.sun.com/robertlor/entry/user_level_dtrace_probes_in
Si observa el enlace del ejecutable de postgres que aborta con un mensage de
error como este:
Undefined first referenced
symbol in file
AbortTransaction utils/probes.o
CommitTransaction utils/probes.o
ld: fatal: Symbol referencing errors. No output written to postgres
collect2: ld returned 1 exit status
gmake: *** [postgres] Error 1
su instalación de DTrace es muy vieja para manejar 'probes' en funciones
estáticas. Necesitará Solaris 10v4 o más nueva. Una forma de solucionarlo es
removiendo la palabra clave de la declaración de las funciones AbortTransaction
y CommitTransaction en src/backend/access/transam/xact.c.
Vea http://sunsolve.sun.com/search/document.do?assetkey=1-1-2139224-1
(Registración requerida).