xlC
の自動検出が Autoconf
からなくなっているため、MySQL
をコンパイルするときには以下のような
configure
の指定が必要です(この例では、IBM
コンパイラを使用しています)。
export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192" export CFLAGS="-I /usr/local/include" export LDFLAGS="-L /usr/local/lib" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS ./configure --prefix=/usr/local \ --localstatedir=/var/mysql \ --sysconfdir=/etc/mysql \ --sbindir='/usr/local/bin' \ --libexecdir='/usr/local/bin' \ --enable-thread-safe-client \ --enable-large-files
上記は、MySQL ディストリビューションをコンパイルする際に使用されるオプションで、http://www-frec.bull.com/ にあります。
上記の configure
行で
-O3
を -O2
に変更した場合は、-qstrict
オプションも削除する必要があります(これは、IBM
C コンパイラの制限です)。
gcc
または egcs
を使用して MySQL
をコンパイルする場合は、-fno-exceptions
フラグを使用する必要があります。gcc
および egcs
の例外処理がスレッドセーフでないためです(これは、egcs
1.1 を使用してテストされています)。IBM
アセンブラにもいくつかの既知の問題があります。これらの問題のために、このアセンブラを
gcc
と共に使用した場合に、不良コードが生成されることがあります。
AIX 上では、egcs
および gcc
2.95
と共に以下の configure
行を使用することをお勧めします。
CC="gcc -pipe -mcpu=power -Wa,-many" \ CXX="gcc -pipe -mcpu=power -Wa,-many" \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory
-Wa,-many
は、コンパイルを成功させるために必要です。IBM
は、この問題を認識していますが、回避方法があるため修正を急いでいません。gcc
2.95
に -fno-exceptions
が必要かどうかはわかりませんが、MySQL
は例外を使用しない上に、このオプションによってコードが高速化するので、egcs
および gcc
には常にこのオプションを使用することをお勧めします。
アセンブラコードで問題が発生する場合は、使用している CPU と一致するように -mcpu=xxx を変更してみてください。通常は、power2、power、または powerpc を指定する必要があるでしょう。あるいは、604 または 604e を指定する必要があるかもしれません。確証はありませんが、ほとんどの場合 "power" を指定しても問題ありません(power2 マシン上であっても同様)。
CPU が何であるかわからない場合は、"uname -m" を実行してください。xxyyyyyymmss の形式を持つ、"000514676700" のような文字列が返されます。この場合、xx と ss は常に 0、yyyyyy は一意のシステム ID、mm は CPU プレーナの ID です。http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm にこれらの値の表があります。 これによってマシンの種類と型がわかります。このマシンの種類と型で、使用している CPU の種類を特定できます。
シグナルに関する問題が発生した場合 (高負荷の状況で MySQL が突然停止する)、スレッドとシグナルに関する OS のバグを見つけた可能性があります。この場合、以下のコマンドを使用してコンフィギャすることで、シグナルを使用しないように MySQL に指示することができます。
shell>CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
-DDONT_USE_THR_ALARM" \
./configure --prefix=/usr/local/mysql --with-debug --with-low-memory
これは、MySQL
のパフォーマンスには影響しませんが、接続上で
"スリープ状態"
のクライアントを、mysqladmin kill
または mysqladmin shutdown
を使用して強制終了することができなくなるという副作用があります。代わりに、クライアントは自身が次回コマンドを発行したときに停止します。
AIX
の一部のバージョンでは、libbind.a
とリンクすると getservbyname
がコアダンプします。これは AIX
のバグなので、IBM
に報告する必要があります。
AIX 4.2.1 と gcc を使用する場合、以下の変更を行う必要があります。
設定の後に、config.h
と
include/my_config.h
を編集して、以下の行を変更します。
#define HAVE_SNPRINTF 1
これを以下のように変更します。
#undef HAVE_SNPRINTF
最後に、mysqld.cc
の initgoups
にプロトタイプを追加する必要があります。
#ifdef _AIX41 extern "C" int initgroups(const char *,int); #endif
mysqld
プロセスに大量のメモリを割り当てる必要がある場合は、'ulimit
-d unlimited'
を設定するだけでは十分ではありません。場合によって、mysqld_safe
で以下のように設定する必要もあります。
export LDR_CNTRL='MAXDATA=0x80000000'
以下のサイトに、大量のメモリの使用についての詳細情報があります。 http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm。
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.