В этом разделе описываются некоторые аспекты использования потоков MIT-pthreads.
Следует иметь в виду, что под Linux использовать потоки MIT-pthreads нельзя, для этого необходимо установить LinuxThreads! See Раздел 2.6.1, «Примечания к Linux (Все версии Linux)».
Если ваша система сама по себе не обеспечивает поддержку потоков, то необходимо скомпоновать MySQL, используя пакет поддержки MIT-pthreads. К таким системам относятся старые системы FreeBSD, SunOS 4.x, Solaris 2.4 и более ранние, а также некоторые другие (see Раздел 2.2.3, «Операционные системы, поддерживаемые MySQL»).
Заметьте, с версии MySQL 4.0.2 потоки MIT более не присутствуют в поставке исходных текстов. Если вам действительно нужен этот пакет, вы можете его забрать с http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
После загрузки, распакуйте этот
архив в каталог исходных текстов
MySQL. Создастся новый каталог
mit-pthreads.
Для большинства систем можно
обеспечить использование
потоков MIT-pthreads при помощи
запуска configure с опцией
--with-mit-threads:
shell> ./configure --with-mit-threads
При использовании потоков MIT-pthreads не поддерживается возможность сборки MySQL в каталоге, не содержащем исходный код, поскольку мы хотим минимизировать наши изменения в данном коде.
Проверки, определяющие,
используются ли потоки MIT-pthreads,
производятся только во время
этапа конфигурационного
процесса, относящегося к
серверному коду. Если
дистрибутив сконфигурирован с
использованием
--without-server для сборки
только клиентского кода, то
клиенты не будут знать,
применяются ли потоки MIT-pthreads, и
будут использовать подключения
через сокеты Unix по умолчанию.
Поскольку сокеты Unix не работают
с потоками MIT-pthreads на некоторых
платформах, то при запуске
клиентских программ следует
использовать -h или
--host.
При компиляции MySQL с
использованием потоков MIT-pthreads
блокирование системы отключено
по умолчанию из соображений
производительности. Можно
предписать серверу использовать
системную блокировку с помощью
опции --use-external-locking. Это
только необходимо если вы
собираетесь использовать два
MySQL-сервера на одних и тех же
файлах данных (не
рекомендуется!).
Иногда потоковой команде
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
(break). Это заметно
только в том случае, если
запускать 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(...)'
Нам не удалось добиться
совместной работы
readline с потоками MIT-pthreads
(это не является необходимым, но
для кого-то может представлять
интерес).
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.
