78 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
3.3.6 Anmerkungen zu MIT-pThreads
Dieser Abschnitt beschreibt einige der Themen im Zusammenhang mit MIT-pThreads.
Beachten Sie, dass Sie auf Linux KEINE MIT-pThreads benutzen, sondern statt dessen
LinuxThreads installieren sollten! Siehe Abschnitt 3.6.1 [Linux], Seite 94.
Wenn Ihr System keine native Thread-Unterst¨utzung bietet, m¨ussen Sie MySQL unter
Verwendung des MIT-pThread-Pakets bauen. Das betrifft ¨altere FreeBSD-Systeme, SunOS
4.x, Solaris 2.4 und fr¨uher und einige andere. Siehe Abschnitt 3.2.2 [Which OS], Seite 59.
• Auf den meisten Systemen k¨onnen Sie die Benutzung von erzwingen, indem Sie
configure mit der --with-mit-Threads-Option laufen lassen:
shell> ./configure --with-mit-threads
Wenn Sie MIT-pThreads benutzen, wird das Bauen (Building) in ein Nicht-Quellcode-
Verzeichnis nicht unterst¨utzt, weil wir die
¨
Anderungen an diesem Code minimal halten
wollen.
• Die
¨
Uberpr¨ufungen, die festlegen, ob MIT-pThreads benutzt werden sollten oder nicht,
finden nur in dem Teil des Konfigurationsprozesses statt, der mit dem Server-Code zu
tun hat. Wenn Sie die Distribution mit --without-server konfigurieren, um nicht
den Client-Code zu bauen, wissen die Clients nicht, ob sie MIT-pThreads benutzen
sollen oder nicht und werden vorgab em¨aßig Unix-Socket-Verbindungen benutzen. Weil
Unix-Sockets unter MIT-pThreads nicht laufen, heißt das, dass Sie -h oder --host
benutzen m¨ussen, wenn Sie Client-Programme laufen lassen.
• Wenn MySQL so kompiliert wird, dass es MIT-pThreads benutzt, wird System-Sperren
(System Locking) vorgabem¨aßig aus Performance-Gr¨unden ausgeschaltet. Mit der --
use-locking-Option k¨onnen Sie dem Server mitteilen, System-Sperren zu benutzen.
• Manchmal schl¨agt der pThread-bind()-Befehl fehl und bindet nicht an ein Socket, ohne
jede Fehlermeldung (zumindest auf Solaris). Als Ergebnis schlagen alle Verbindungen
zum Server fehl. Beispiel:
shell> mysqladmin version
mysqladmin: connect to server at ’’ failed;
error: ’Can’t connect to mysql server on localhost (146)’
Die L¨osung besteht darin, den mysqld-Server zu killen und neu zu starten. Uns ist
das nur dann passiert, wenn wir den Server gezwungen haben, herunter zu fahren und
sofort danach einen Neustart durchgef¨uhrt haben.
• Bei MIT-pThreads l¨aßt sich der sleep()-Systemaufruf nicht mit SIGINT (break) un-
terbrechen. Das merken Sie nur, wenn Sie mysqladmin --sleep ausf¨uhren. Sie m¨ussen
dann warten, bis der sleep()-Aufruf beendet wurde, bevor die Unterbrechungsan-
forderung (Interrupt) bedient wird und der Prozess anh¨alt.
• Wenn Sie linken, erhalten Sie m¨oglicherweise Warnmeldungen wie diese (zumindest auf
Solaris). Sie k¨onnen sie ignorieren:
ld: warning: symbol ‘_iob’ hat 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’ hat differing sizes:
Kommentare zu diesen Handbüchern