Замечания по потокам 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 и более ранние, а также некоторые другие (см. раздел Операционные системы, поддерживаемые 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 (это не является необходимым, но для кого-то может представлять интерес).
Дистрибутив исходного кода для Windows
Вам потребуются следующие средства:
Компилятор VC++ 6.0 (усовершенствованный с помощью служебных пакетов 4 SP или 5 SP и пакета предварительной обработки) Пакет предварительной обработки необходим для макроассемблера. Более подробная информация находится на: http://msdn.microsoft.com/vstudio/sp/vs6sp5/faq.asp.
Дистрибутив исходного кода MySQL для Windows, который может быть загружен с http://www.mysql.com/downloads/.
Сборка MySQL
Создайте рабочий каталог (т.е. workdir ).
Распакуйте дистрибутив исходного кода в вышеупомянутом каталоге.
Запустите компилятор VC++ 6.0.
В меню File выберите Open Workspace .
Откройте рабочую область mysql.dsw , находящуюся в рабочем каталоге.
В меню Build выберите подменю Set Active Configuration .
Выберите в появившемся окне mysqld - Win32 Debug и нажмите OK .
Нажмите клавишу F7 , чтобы начать процесс построения отладочных версий сервера, библиотек и некоторых клиентских приложений.
По окончании компиляции скопируйте библиотеки и исполняемые файлы в отдельный каталог.
Тем же способом скомпилируйте рабочие версии (релизы), которые вам нужны.
Создайте каталог для всего, что нужно MySQL, т.е. "c:\mysql"
Из каталога workdir скопируйте в каталог "c:\mysql" следующие подкаталоги:
Создайте каталог "c:\mysql\bin" и скопируйте в него все скомпилированные перед этим серверы и клиенты.
При желании можете также создать каталог `lib" и скопировать в него скомпилированные ранее библиотеки.
Произведите очистку, используя Visual Studio. Установите и запустите сервер тем же способом, что и для бинарного дистрибутива для Windows (см. раздел Подготовка конфигурации MySQL для Windows).
1 2 3 4 5
8 8 8
| |