В Autoconf пропущено автоматическое
определение xlC, поэтому
при компиляции 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/.
Если в приведенных выше строках
конфигурации вы изменяете
-O3 на -O2,
следует также удалить опцию
-qstrict (это ограничение
компилятора IBM C).
При использовании gcc
или egcs для компиляции
MySQL следует применять флаг
-fno-exceptions, потому что
обработчик исключительных
ситуаций в
gcc/egcs не
безопасен в реализации потоков!
(Это проверено на egcs 1.1.)
Существуют также некоторые
известные проблемы с ассемблером
IBM, которые могут привести к
генерации неудачного кода при
использовании его с gcc.
Для использования egcs
или gcc 2.95 на AIX мы
рекомендуем следующую строку
конфигурирования:
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
известно о существовании данной
проблемы, но ее специалисты не
торопятся исправлять ошибку,
поскольку существует способ
обхода. Нам неизвестно,
необходимо ли использование
-fno-exceptions с gcc
2.95, но поскольку в MySQL нет
обработчика исключительных
ситуаций, а эта опция
способствует созданию более
быстрого кода, мы рекомендуем
всегда использовать ее с
egcs/gcc.
В случае возникновения проблем в программах на ассемблере необходимо привести -mcpu=xxx в соответствие со своим процессором. Обычно достаточно использовать power2, power или powerpc, но, возможно, необходимо будет указать 604 или 604e. Хотя это и не приветствуется, но использование "power" будет безопасным почти всегда, даже на power2-машинах.
Если вы не знаете, какой у вас процессор, следует запустить uname -m. Данная команда возвращает строку наподобие "000514676700", формат которой xxyyyyyymmss, где xx и ss всегда 0, yyyyyy - уникальный идентификатор системы и mm - идентификатор процессора Planar. Карта этих значений находится по адресу http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm.
В соответствии с данной картой можно узнать тип и модель машины, а уже по ним -определить тип процессора.
Возникновение проблем с сигналами (MySQL неожиданно умирает при большой нагрузке) может означать, что вы столкнулись с ошибкой операционной системы в работе с потоками и сигналами. В этом случае можно запретить 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
вызывает аварийную остановку
программы с сохранением образа
памяти на диск (core dump). Это ошибка
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.
© 1995-2005 MySQL AB. All rights reserved.
