Esta sección describe alguno de los probleas que pueden ocurrir al utilizar MIT-pthreads.
En Linux, no se deberían utilizar MIT-pthreads. En su lugar, utilizar la implementación de LinuxThreads instalada. Consulte Sección 2.12.1, “Notas sobre Linux”.
Si el sistema no provee soporte nativo para subprocesos, se necesita compilar MySQL utilizando el paquete MIT-pthreads. Esto incluye a antiguos sistemas FreeBSD, SunOS 4.x, Solaris 2.4 y anteriores, y algunos otros. Consulte Sección 2.1.1, “Sistemas operativos que MySQL soporta”.
El paquete MIT-pthreads no es parte de la distribución de código fuente de MySQL 5.0. Si se lo necesita, habrá que descargarlo desde http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz.
Luego de la descarga, debe expandirse dentro del más alto nivel
del directorio de código fuente de MySQL. Creará un nuevo
subdirectorio llamado mit-pthreads
.
En la mayoría de los sistemas, para forzar el uso de
MIT-pthreads se debe ejecutar configure
con la opción --with-mit-threads
.
shell> ./configure --with-mit-threads
La generación (building) en un directorio que no sea de código fuente no está soportada cuando se usan MIT-pthreads porque se desea minimizar los cambios al código.
La comprobación que determina si se utilizará MIT-pthreads
sucede únicamente durante la parte del proceso de
configuración que tiene que ver con el código del
servidor. Si se ha configurado la distribución empleando
--without-server
para generar solamente
el código del cliente, los clientes no saben si se está
utilizando MIT-pthreads y emplean conexiones socket Unix por
defecto. Dado que los ficheros socket de Unix no funcionan
bajo MIT-pthreads en algunas plataformas, esto significa que
se deberá utilizar -h
o
--host
cuando se ejecuten programas
cliente.
Cuando se compila MySQL empleado MIT-pthreads, el bloqueo de
sistema se deshabilita por defecto por razones de
rendimiento. Se le puede indicar al servidor que emplee
bloqueo de sistema con la opción
--external-locking
. Esto es necesario
solamente si se desea poder ejecutar dos servidores MySQL
sobre los mismos ficheros de datos, lo cual no es
recomendable.
Algunas veces, el comando bind()
de
pthread falla al adosarse a un socket sin emitir mensajes de
error (al menos en Solaris). El resultado es que todas las
conexiones al servidor fallan. Por ejemplo:
shell> mysqladmin version mysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)'
La solución a esto es finalizar el servidor mysqld y reiniciarlo. Esto ha ocurrido solamente cuando se ha detenido el servidor por la fuerza y se lo ha reiniciado inmediatamente.
Con MIT-pthreads, la llamada de sistema
sleep()
no es interrumpida con
SIGINT
(interrupción). Esto solamente es
perceptible cuando se ejecuta mysqladmin
--sleep. Se debe esperar a que la llamada
sleep()
termine antes de que el pedido de
interrupción sea atendido y el proceso se detenga.
Durante el enlazado, se pueden recibir mensajes de advertencia como los siguientes (al menos en Solaris); deben ser ignorados.
ld: warning: symbol `_iob' has differing sizes: (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4; file /usr/lib/libc.so value=0x140); /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken ld: warning: symbol `__iob' has differing sizes: (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4; file /usr/lib/libc.so value=0x140); /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
Algunas otras advertencias también deben ignorarse:
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
No se ha podido hacer funcionar readline
con MIT-pthreads. (Esto no es necesario, pero podría ser de
interés para alguien).
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.