MySQL.RU .:. Одобрено лучшими российскими программистами
Справочное руководство по MySQL2.3.6 Замечания по потокам MIT-pthreads
2.3.6 Замечания по потокам MIT-pthreads
В этом разделе описываются некоторые аспекты использования потоков
MIT-pthreads.
Следует иметь в виду, что под Linux использовать потоки MIT-pthreads
нельзя, для этого необходимо установить LinuxThreads! See section 2.6.1 Примечания к Linux (Все версии Linux).
Если ваша система сама по себе не обеспечивает поддержку потоков, то
необходимо скомпоновать MySQL, используя пакет поддержки MIT-pthreads. К
таким системам относятся старые системы FreeBSD, SunOS 4.x, Solaris 2.4 и
более ранние, а также некоторые другие (see section 2.2.5 Операционные системы, поддерживаемые 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 (это не является необходимым, но для кого-то может
представлять интерес).
|