Cette section décrit quelques informations concernant
l'utilisation des MIT-pthreads
.
Notez que sur Linux vous ne devez pas
utiliser les MIT-pthreads
mais installer
LinuxThreads
! See Section 2.8.1, « Notes relatives à Linux (toutes versions) ».
Si votre système ne fournit pas un support natif des threads,
vous aurez besoin de construire MySQL en utilisant le paquet des
MIT-pthreads
. Cela inclut les anciens
systèmes FreeBSD, SunOS 4.x, Solaris 2.4 et plus ancien, et
quelques autres systèmes. See Section 2.1.1, « Systèmes d'exploitation supportés par MySQL ».
Notez qu'à partir de la version 4.0.2 de MySQL les
MIT-pthreads
ne font plus partie de la
distribution des sources ! si vous avez besoin de ce paquet,
vous pouvez l'obtenir sur
http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
Après l'avoir récupéré, décompressez l'archive dans le
répertoire racine de votre répertoire des sources de MySQL.
Cela créera le répertoire mit-pthreads
.
Sur la plupart des systèmes, vous pouvez forcer
l'utilisation des MIT-pthreads
en
exécutant configure
avec l'option
--with-mit-threads
:
shell> ./configure --with-mit-threads
La compilation dans un dossier non-sources n'est pas
supporté lors de l'utilisation des
MIT-pthreads
car nous voulons minimiser
les changements de leur code.
La vérification pour l'utilisation des
MIT-pthreads
ne survient que durant la
partie du processus de configuration qui s'occupe du code du
serveur. Si vous avez configuré la distribution en
utilisant --without-server
pour ne
construire que le client, les clients ne sauront pas si les
MIT-pthreads
sont utilisés et
utiliserons les socket Unix pour les connexions par défaut.
Puisque les sockets Unix ne fonctionnent pas avec les
MIT-pthreads
sur certaines plate-formes,
cela signifie que vous devrez utiliser -h
ou --host
quand vous exécuterez les
programmes clients.
Lorsque MySQL est compilé en utilisant les
MIT-pthreads
, le verrouillage système
est désactivé par défaut pour des soucis de performances.
Vous pouvez demander au serveur d'utiliser les verrous
systèmes avec l'option --external-locking
.
Cela n'est requis que si vous avez besoin de faire
fonctionner deux serveurs MySQL avec les mêmes données
(non recommandé).
De temps en temps, la commande bind()
des
pthreads n'arrive pas à attacher une socket sans afficher
d'erreurs (du mois, sous Solaris). Le résultat est que
toutes les connexions au serveur échouent. Par exemple :
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
La solution est de terminer le serveur
mysqld
et de le redémarrer. Cela ne nous
est arrivé que quand nous avons forcé le serveur à se
terminer et que nous l'avons redémarré immédiatement
après.
Avec les MIT-pthreads
, l'appel système
à sleep()
ne peut pas être interrompu
avec SIGINT
(break
).
On ne s'en rend compte que quand on exécute
mysqladmin --sleep
. Vous devez attendre
que l'appel système à sleep()
se
termine avant que le processus ne s'arrête.
Lors de la liaison, vous pouvez obtenir des messages d'erreurs comme ceux-ci (du moins sur Solaris); ils peuvent être ignorés :
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
D'autres avertissements peuvent être ignorés :
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
Nous n'avons pas réussi à faire fonctionner
readline
avec les
MIT-pthreads
. (Cela n'est pas
nécessaire, mais peut être utile à quelqu'un.)
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.