Die folgenden Anmerkungen zu glibc
          betreffen Sie nur, wenn Sie MySQL selbst erstellen. Wenn Sie
          Linux auf einem x86-Computer ausführen, sollten Sie in den
          meisten Fällen besser unsere Binärdistribution verwenden.
          Wir verknüpfen unsere Binärdateien zur jeweils am besten
          gepatchten Version von glibc, die wir
          finden können, und mit den bestmöglichen
          Compiler-Einstellungen, um sie so für hochbeanspruchte Server
          zu optimieren. Für normale Benutzer ist unsere
          Binärdistribution auch in Setups mit vielen gleichzeitigen
          Verbindungen oder Tabellen, die die 2-Gbyte-Grenze sprengen,
          in den meisten Fällen erste Wahl. Wenn Sie nach der Lektüre
          des folgenden Texts nicht genau wissen, wie Sie vorgehen
          sollen, probieren Sie zunächst unsere Binärdatei aus, um zu
          ermitteln, ob diese für Ihre Anforderungen geeignet ist.
          Sollten Sie feststellen, dass dies nicht der Fall ist, dann
          sollten Sie eine selbsterstellte Version erproben. In diesem
          Fall würden wir uns freuen, wenn Sie uns dies mitteilen
          würden, damit wir beim nächsten Mal eine bessere
          Binärdistribution erstellen können.
        
          MySQL verwendet LinuxThreads unter Linux. Wenn Sie eine alte
          Linux-Version verwenden, die glibc2 nicht
          enthält, dann müssen Sie LinuxThreads installieren, bevor
          Sie MySQL zu kompilieren versuchen. Sie bekommen LinuxThreads
          unter
          http://dev.mysql.com/downloads/os-linux.html.
        
          Beachten Sie, dass glibc-Versionen bis
          einschließlich 2.1.1 beim Umgang mit
          pthread_mutex_timedwait(), welches beim
          Absetzen von INSERT DELAYED-Anweisungen
          verwendet wird, einen schweren Bug aufweisen. Wir empfehlen
          Ihnen, INSERT DELAYED erst nach der
          Aktualisierung von glibc zu verwenden.
        
Beachten Sie, dass der Linux-Kernel und die LinuxThread-Bibliothek standardmäßig maximal 1024 Threads verwalten können. Wenn Sie mehr als 1000 gleichzeitige Verbindungen vorsehen, dann müssen Sie wie folgt ein paar Änderungen an LinuxThreads vornehmen:
              Erhöhen Sie den Wert
              PTHREAD_THREADS_MAX in
              sysdeps/unix/sysv/linux/bits/local_lim.h
              auf 4096 und verringern Sie STACK_SIZE
              in linuxthreads/internals.h auf 256
              Kbyte. Die Pfade sind relativ zum Stammverzeichnis von
              glibc. (Beachten Sie, dass MySQL bei
              600 bis 1000 Verbindungen nicht stabil läuft, wenn
              STACK_SIZE auf der Vorgabe von 2 Mbyte
              belassen wird.)
            
              Kompilieren Sie LinuxThreads erneut, um eine neue
              libpthread.a-Bibliothek zu erzeugen,
              und verknüpfen Sie MySQL dann wieder damit.
            
Weitere Informationen dazu, wie Sie Thread-Beschränkungen in LinuxThreads umgehen, finden Sie unter http://www.volano.com/linuxnotes.html.
          Es gibt noch ein weiteres Problem, dass die Performance von
          MySQL insbesondere auf SMP-Systemen erheblich beeinträchtigt.
          glibc 2.1 weist eine sehr schwache
          Mutex-Implementierung in LinuxThreads für Programme mit
          vielen Threads auf, die das Mutex nur für eine kurze Zeit
          halten. Die Folgen sind paradox: Wenn Sie MySQL mit einer
          nicht modifizierten LinuxThreads-Version verbinden, können
          Sie die Leistungsfähigkeit von MySQL in vielen Fällen
          verbessern, indem Sie Prozessoren aus dem SMP entfernen! Wir
          haben für glibc 2.1.3 unter
          http://dev.mysql.com/Downloads/Linux/linuxthreads-2.1-patch
          einen Patch bereitgestellt, um dieses Verhalten zu
          korrigieren.
        
          Bei glibc 2.2.2 verwendet MySQL das
          adaptive Mutex, welches wesentlich besser ist als bei
          glibc 2.1.3 (auch in der gepatchten
          Version). Wir wollen aber darauf hinweisen, dass der aktuelle
          Mutex-Code in glibc 2.2.2 gelegentlich zu
          viel des Guten tut, wodurch die MySQL-Performance wieder
          beeinträchtigt wird. Die Wahrscheinlichkeit, dass ein solches
          Verhalten auftritt, kann dadurch verringert werden, dass man
          dem Prozess mysqld die höchste Priorität
          zuweist. Wir konnten das Problem zudem ebenfalls mit einem
          Patch beheben, den Sie unter
          http://dev.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch
          finden. Dieser Patch korrigiert alle drei hier beschriebenen
          Probleme: das STACK_SIZE-Problem, das
          Problem der Thread-Beschränkung und das Mutex-Problem. Er
          muss im Verzeichnis linuxthreads mit
          patch -p0 </tmp/linuxthreads-2.2.2.patch
          angewendet werden. Wir hoffen, dass er in irgendeiner Form in
          zukünftigen Releases von glibc 2.2
          enthalten sein wird. In jedem Fall müssen Sie bei der
          Verknüpfung mit glibc 2.2.2
          STACK_SIZE und
          PTHREAD_THREADS_MAX korrigieren. Wir
          hoffen, dass die Standardeinstellungen in Zukunft auf Werte
          korrigiert werden, die für hochbeanspruchte MySQL Server
          geeigneter sind; in diesem Fall ließen sich die Befehle zur
          Erstellung eines eigenen Builds auf ./configure;
          make; make install beschränken.
        
          Wir empfehlen Ihnen, diese Patches zur Erstellung einer
          speziellen statischen Version von
          libpthread.a zu verwenden und diese dann
          nur für die statische Verknüpfung mit MySQL zu verwenden.
          Wir wissen, dass diese Patches in Verbindung mit MySQL
          einwandfrei funktionieren und die Leistungsfähigkeit
          erheblich verbessern, können jedoch nichts zu ihren
          Auswirkungen auf andere Anwendungen sagen. Wenn Sie andere
          Anwendungen verknüpfen, die LinuxThreads mit einer anderen
          als der gepatchten statischen Version der Bibliothek
          benötigen, oder eine gepatchte gemeinsame Version erstellen
          und diese auf Ihrem System installieren, dann tun Sie dies auf
          eigenes Risiko.
        
Sollten während der Installation von MySQL merkwürdige Probleme auftreten oder bestimmte gängige Hilfsprogramme stehen bleiben, dann ist dies mit hoher Wahrscheinlichkeit durch die Bibliothek oder den Compiler verursacht. Wenn dies der Fall ist, dann können Sie diese Probleme mithilfe unserer Binärdistribution lösen.
Wenn Sie eigene MySQL-Clientprogramme verknüpfen, dann wird unter Umständen die folgende Fehlermeldung zur Laufzeit angezeigt:
ld.so.1: fatal: libmysqlclient.so.#: open failed: No such file or directory
Dieses Problem lässt sich auf eine der folgenden Weisen lösen:
          Wenn Sie den Fujitsu-Compiler (fcc/FCC)
          verwenden, treten unter Umständen Probleme bei der
          Kompilierung von MySQL auf, weil die Linux-Header-Dateien sehr
          stark auf gcc ausgerichtet sind. Der
          folgende configure-Befehl sollte auch für
          fcc/FCC funktionieren:
        
CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE \
    -DCONST=const -DNO_STRTOLL_PROTO" \
CXX=FCC CXXFLAGS="-O -K fast -K lib \
    -K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE \
    -DCONST=const -Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO \
    '-D_EXTERN_INLINE=static __inline'" \
./configure \
    --prefix=/usr/local/mysql --enable-assembler \
    --with-mysqld-ldflags=-all-static --disable-shared \
    --with-low-memory
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

