当社では GNU Autoconf を使用しているので、正常に機能する Posix スレッドおよび C++ コンパイラによってすべての最新のシステムに MySQL を移植することができます(クライアントコードだけをコンパイルする場合は、C++ コンパイラは必要ですがスレッドは不要です)。当社では、主に Linux(SuSE および Red Hat)、FreeBSD、および Sun Solaris (バージョン 8 および 9)上で MySQL ソフトウェアを使用および開発しています
多くのオペレーティングシステムでは、ネイティブスレッドは最新バージョンのOSでのみ有効であることに注意してください。MySQL は、以下のオペレーティングシステムとスレッドパッケージの組み合わせで正常にコンパイルすることが報告されています。
AIX 4.x、5.x とネイティブスレッド。 See 項2.6.6.4. 「IBM-AIX の注意事項」。
Amiga
BSDI 2.x と MIT-pthreads パッケージ。 See 項2.6.4.5. 「BSD/OS バージョン 2.x の注意事項」。
BSDI 3.0、3.1、および 4.x とネイティブスレッド。 See 項2.6.4.5. 「BSD/OS バージョン 2.x の注意事項」。
SCO OpenServer と最新の移植版の FSU Pthreads パッケージ。 See 項2.6.6.9. 「SCO の注意事項」。
SCO UnixWare 7.1.x。See 項2.6.6.10. 「SCO UnixWare バージョン 7.1.x の注意事項」。
DEC Unix 4.x とネイティブスレッド。 See 項2.6.6.6. 「Alpha-DEC-UNIX(Tru64)の注意事項」。
FreeBSD 2.x と MIT-pthreads パッケージ。 See 項2.6.4.1. 「FreeBSD の注意事項」。
FreeBSD 3.x および 4.x とネイティブスレッド。 See 項2.6.4.1. 「FreeBSD の注意事項」。
FreeBSD 4.x と Linuxthreads。 See 項2.6.4.1. 「FreeBSD の注意事項」。
HP-UX 10.20 と DCE スレッドまたは MIT-pthreads パッケージ。 See 項2.6.6.2. 「HP-UX バージョン 10.20 の注意事項」。
HP-UX 11.x とネイティブスレッド。 See 項2.6.6.3. 「HP-UX バージョン 11.x の注意事項」。
Linux 2.0+ と LinuxThreads 0.7.1+ または
glibc
2.0.7+。 See
項2.6.2. 「Linux の注意事項(すべての Linux バージョン)」。
Mac OS X。See 項2.6.5. 「Mac OS X の注意事項」。
NetBSD 1.3/1.4 Intel および NetBSD 1.3 Alpha(GNU make が必要)。 See 項2.6.4.2. 「NetBSD の注意事項」。
Novell NetWare 6.0。 See 項2.6.8. 「Novell NetWare の注意事項」。
OpenBSD 2.5 以降のバージョンとネイティブスレッド。OpenBSD 2.5 より前のバージョンと MIT-pthreads パッケージ。 See 項2.6.4.3. 「OpenBSD 2.5 の注意事項」。
OS/2 Warp 3,FixPack 29 および OS/2 Warp 4, FixPack 4。See 項2.6.7. 「OS/2 の注意事項」。
SGI Irix 6.x とネイティブスレッド。 See 項2.6.6.8. 「SGI Irix の注意事項」。
Solaris 2.5 以降と SPARC および x86 上のネイティブスレッド。 See 項2.6.3. 「Solaris の注意事項」。
SunOS 4.x と MIT-pthreads パッケージ。 See 項2.6.3. 「Solaris の注意事項」。
Tru64 Unix
Windows 9x、Me、NT、2000、および XP。 See 項2.6.1. 「Windows の注意事項」。
注意: すべてのシステムが、MySQL の実行に同じように適しているとは限りません。特定のプラットフォームが高負荷でミッションクリティカルな MySQL サーバにどのぐらい適しているかは、以下の要因によって決まります。
スレッドライブラリの全般的な安定性。他の点で高い評価を得ているプラットフォームでも、MySQL が呼び出すスレッドライブラリのコードが不安定である場合は、それ以外のすべての点で完璧であっても、MySQL の動作は不安定になる。
カーネルおよびスレッドライブラリまたはそのいずれかがマルチプロセッサシステム上で SMP を活用できるかどうか。つまり、プロセスがスレッドを作成した場合に、そのスレッドは元のプロセスとは異なる CPU 上で動作できなければならない。
カーネル/スレッドライブラリが、
過剰なコンテキストスイッチを行うことなく、
相互排他ロック(mutex)を頻繁に取得/解放する多くのスレッドを、実行できるかどうか。
つまり、pthread_mutex_lock()
の実装が CPU
時間を生み出すことに重点を置きすぎている場合、そのことで
MySQL
のパフォーマンスは大きく損なわれることになる。この問題に対処しないと、CPU
をマシンに追加すると MySQL
の処理速度が実質的に遅くなる。
ファイルシステムの全般的な安定性とパフォーマンス
ファイルシステムがテーブルが大きい場合に大きなファイルを効率的に処理できるかどうか。
プラットフォームに関する MySQL AB の専門知識のレベル。MySQL AB は、熟知しているプラットフォームについては、コンパイル時に有効になるプラットフォーム固有の最適化や修正を導入する。また、MySQL 向けにシステム設定を最適化する方法について助言することもできる。
似たような設定をした環境に対して、MySQL AB が社内で行ったテストの量。
目的のプラットフォーム上で MySQL を問題なく実行したユーザの数。この数が多ければ、プラットフォーム固有の予期せぬ問題が発生する可能性が非常に低くなる。
以上の基準から、現時点で MySQL を実行するのに最適なプラットフォームは、SuSE Linux 8.2、2.4 カーネル、および ReiserFS (または類似の Linux ディストリビューション)を搭載した x86 と、Solaris(2.7 〜 9)を搭載した SPARC です。FreeBSD は第 3 位ですが、スレッドライブラリが改善されればベストグループに仲間入りするはずです。また、MySQL がコンパイルされ、正常に動作する(安定性とパフォーマンスのレベルがまったく同じではないにしても)他のすべてのプラットフォームをいつの日かベストグループに含めることができるようになることを当社は切に希望しています。そのためには、MySQL が依存する OS やライブラリの開発者と協力して当社が努力する必要があります。それらのコンポーネントのいずれかを改善することに興味があり、その開発に影響を与える立場にあり、MySQL の動作を改善するために必要な事柄についての詳細な説明が必要なユーザは、MySQL の社内メーリングリストに電子メールをお送りください。 See 項1.7.1.1. 「MySQL メーリングリスト」。
上記の比較は、各 OS の全般的な優劣をつけるためのものではありません。ここでは、特定用途(つまり MySQL の実行)のために特定の OS を選択することに焦点をあてており、その点に関してのみプラットフォームを比較しています。これを念頭に置けば、この比較にさらに多くの論点を含めた場合は、結果は異なったものになります。ある OS が別の OS よりも優れている理由が、単に当社がそのプラットフォームのテストと最適化に他のプラットフォームよりも多くの労力を費やしたためだけであるということもあります。 ここでは、ご使用のセットアップ内で MySQL を使用するプラットフォームを決定する際に参考にしていただけるように当社の所見を述べているにすぎません。
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.