ここでは、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.