ここでは、MIT-pthreads の使用に関係するいくつかの問題を説明します。
注意: Linux では、MIT-pthreads を使用しないで、インストールされている LinuxThreads 実装を使用してください。 See 項2.6.2. 「Linux の注意事項(すべての Linux バージョン)」。
システムにネイティブスレッドサポートが用意されていない場合は、MIT-pthreads パッケージを使用して MySQL をビルドする必要があります。そのようなシステムとしては、旧バージョンの FreeBSD システム、SunOS 4.x、Solaris 2.4 以前などがあります。 See 項2.2.3. 「MySQL がサポートしているオペレーティングシステム」。
注意: MySQL 4.0.2 からは、ソースディストリビューションに MIT-pthreads は含まれていません。このパッケージが必要な場合は、http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz から別にダウンロードしてください。
        ダウンロードしたら、このソースアーカイブを
        MySQL
        ソースディレクトリの最上位で展開します。これによって、mit-pthreads
        というサブディレクトリが新しく作成されます。
      
            ほとんどシステムでは、--with-mit-threads
            オプションを指定して configure
            を実行して、強制的に MIT-pthreads
            を使用させることができる。
          
shell> ./configure --with-mit-threads
MIT-pthreads を使用している場合は、このコードへの変更を最小限に抑えたいので、ソースディレクトリ以外の場所へのビルドはサポートされていない。
            MIT-pthreads
            を使用するかどうかを判断するチェックは、サーバコードを処理する設定プロセスの一環としてしか行われない。--without-server
            を使用してディストリビューションをコンフィギャしてクライアントコードだけをビルドした場合は、クライアントは
            MIT-pthreads
            を使用するかどうかを判断できず、デフォルトで
            Unix ソケット接続を使用する。
            一部のプラットフォームでは、MIT-pthreads
            のもとで Unix
            ソケットが機能しないため、クライアントプログラムを実行するときに
            -h または --host
            を使用する必要がある。
          
            MIT-pthreads を使用して MySQL
            をコンパイルした場合は、パフォーマンス上の理由から、デフォルトでシステムロックが無効になる。--external-locking
            オプションを使用して、システムロックの使用をサーバに指示することができる。これは、同じデータファイルに対して
            2 つの MySQL
            サーバを実行できるようにする場合にのみ必要である(このような処理は推奨しない)。
          
            pthread bind()
            コマンドがソケットへのバインドに失敗し、エラーメッセージが表示されないことがある(これは、少なくとも
            Solaris
            上では発生する)。したがって、サーバへのすべての接続が失敗するということになる。以下に例を示す。
          
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
            この問題の解決策は、mysqld
            サーバを強制終了して再起動することである。
            これは、当社でサーバを強制的に停止してすぐに再起動したときに、偶然見つかった方法である。
          
            MIT-pthreadsでは、sleep()
            システムコールに対して
            SIGINT(ブレーク)による割り込みを行うことはできない。これは、mysqladmin
            --sleep
            を実行したときにのみわかる。sleep()
            コールが終了してから、割り込みが実行されプロセスが停止する。
          
リンク時に、以下のような警告メッセージが表示されることがある(少なくとも Solaris では発生する)。これらのメッセージは無視してかまわない。
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
そのほかに、以下のような警告も無視してかまわない。
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
            MIT-pthreads と連携して動作する
            readline
            はまだない(これは、必要のないものであるが、興味のあるユーザもいるかもしれない)。
          
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.

