Мы применяем GNU Autoconf, что дает возможность переносить MySQL на все современные системы с работающими потоками Posix и компилятором C++ (чтобы скомпилировать только код клиента, требуется только компилятор C++ без использования потоков). Для себя мы используем и разрабатываем программное обеспечение в основном на Sun Solaris (версий 2.5 - 2.7) и SuSE Linux версии 7.x.
Следует учитывать, что для многих операционных систем поддержка собственных потоков работает только в самых последних версиях. Согласно полученным нами сообщениям, MySQL успешно компилируется на следующих комбинациях операционных систем и потоковых пакетов:
AIX 4.x, 5.x с собственными потоками. См.раздел See Раздел 2.6.6.4, «Примечания к IBM-AIX».
Amiga.
BSDI 2.x с пакетом MIT-pthreads. See Раздел 2.6.4.5, «Примечания к BSD/OS версий 2.x».
BSDI 3.0, 3.1 и 4.x с собственными потоками. See Раздел 2.6.4.5, «Примечания к BSD/OS версий 2.x».
DEC Unix 4.x с собственными потоками. See Раздел 2.6.6.6, «Примечания к Alpha-DEC-UNIX (Tru64)».
FreeBSD 2.x с пакетом MIT-pthreads. See Раздел 2.6.4.1, «Примечания к FreeBSD».
FreeBSD 3.x и 4.x с собственными потоками. See Раздел 2.6.4.1, «Примечания к FreeBSD».
HP-UX 10.20 с пакетом MIT-pthreads или пакетом DCE-threads. See Раздел 2.6.6.2, «Примечания к HP-UX версии 10.20».
HP-UX 11.x с собственными потоками. See Раздел 2.6.6.3, «Примечания к HP-UX версий 11.x».
Linux 2.0+ с потоками LinuxThreads 0.7.1+ или glibc 2.0.7+. См. раздел See Раздел 2.6.1, «Примечания к Linux (Все версии Linux)».
Mac OS X. See Раздел 2.6.5, «Примечания к Mac OS X».
NetBSD 1.3/1.4 Intel и NetBSD 1.3 Alpha (требует GNU make). See Раздел 2.6.4.2, «Примечания к NetBSD».
OpenBSD > 2.5 с собственными потоками. OpenBSD < 2.5 с пакетом MIT-pthreads. See Раздел 2.6.4.3, «Примечания к OpenBSD 2.5».
OS/2 Warp 3, FixPack 29 и OS/2 Warp 4, FixPack 4. See Раздел 2.6.7, «Примечания к OS/2».
SGI Irix 6.x с собственными потоками. See Раздел 2.6.6.8, «Примечания к SGI Irix».
Solaris 2.5 и выше с собственными потоками на SPARC и x86. See Раздел 2.6.3, «Примечания к Solaris».
SunOS 4.x с пакетом MIT-pthreads. See Раздел 2.6.3, «Примечания к Solaris».
Caldera (SCO) OpenServer с последним портом пакета FSU Pthreads. See Раздел 2.6.6.9, «Примечания к Caldera (SCO)».
Caldera (SCO) UnixWare 7.0.1. See Раздел 2.6.6.10, «Примечания к Caldera (SCO) Unixware Version 7.0».
Tru64 Unix
Windows 9x, Me, NT, 2000 и XP. See Раздел 2.6.2, «Примечания к Windows».
Следует отметить, что не на всех платформах MySQL функционирует одинаково хорошо. Насколько подходит определенная платформа для высоконагружаемого многоцелевого сервера MySQL, определяется следующими факторами:
Общая стабильность потоковой библиотеки. Платформа может иметь отличную репутацию в других отношениях, но если в коде, который вызывается MySQL, потоковая библиотека нестабильна, то, даже если все остальное прекрасно, стабильность MySQL будет определяться стабильностью потоковой библиотеки.
Способность ядра и/или библиотеки потоков пользоваться преимуществом симметричной многопроцессорной обработки (
SMP
) на многопроцессорных системах. Другими словами, при создании процессом потока для этого потока должна быть возможность работать на ином центральном процессоре (CPU), чем исходный процесс.Способность библиотеки ядра и/или потоков запускать много потоков, которые приобретают/освобождают синхронизирующий флаг в небольшой критической области, часто без излишних переключений контекста. Иными словами, если реализация
pthread_mutex_lock()
является очень ``уступающей'' время центрального процессора, это значительно вредит MySQL. Если не принять во внимание данное обстоятельство, то использование добавочных центральных процессоров сделает MySQL существенно медленнее.Общая стабильность/производительность файловой системы.
Способность файловой системы работать с большими файлами вообще и работать с ними эффективно в случае больших таблиц.
Наш, т.е. разработчиков, уровень компетенции в том, что касается данной платформы. Для платформ, которые мы знаем хорошо, мы вводим в MySQL специфические для платформы оптимизации/исправления, доступные во время компиляции. Кроме того, мы можем также дать совет по оптимальной для MySQL конфигурации вашей системы.
Выполненный нами у себя объем тестирования подобных конфигураций.
Количество пользователей, успешно применяющих MySQL на данной платформе в подобных конфигурациях. Если это количество велико, то шансы получить некоторые специфические для данной платформы сюрпризы, намного меньше.
В соответствии с предыдущими критериями наилучшими платформами с этой
точки зрения для функционирования MySQL являются: x86 под управлением SuSE
Linux 7.1, с ядром 2.4 и ReiserFS (или любой подобный дистрибутив Linux) и
SPARC под управлением Solaris 2.7 или 2.8. FreeBSD оказывается третьей, но
мы в самом деле надеемся, что эта платформа войдет в число лучших, как
только станет совершеннее потоковая библиотека. Мы также надеемся, что, с
некоторого момента, мы сможем включить в высшую категорию все остальные
платформы, на которых MySQL компилируется и функционирует нормально, но не
с тем же уровнем стабильности и производительности. Это потребует
некоторых усилий с нашей стороны в сотрудничестве с разработчиками
компонентов операционных систем и библиотек, от которых зависит MySQL.
Если вы заинтересованы в улучшении тех или иных компонентов, у вас есть
возможность оказать влияние на их разработку и вы нуждаетесь в подробных
инструкциях по поводу того, что нужно MySQL, чтобы работать лучше, пошлите
письмо по адресу <[email protected]>
.
Просьба к вам: на основании приведенных выше сравнительных характеристик не делать выводов о том, что какая-либо операционная система лучше или хуже другой в общем. Мы говорим о выборе определенной операционной системы для конкретной цели - для работы MySQL, и сравниваем платформы только в таком смысле. С этой точки зрения результат такого сравнения был бы другим, если бы мы включили в него больше пунктов. И в некоторых случаях причина того, что одна операционная система лучше, чем другая, может заключаться всего лишь в том, что в тестирование и оптимизацию этой конкретной платформы было вложено гораздо больше усилий. Мы просто констатируем наши наблюдения, чтобы помочь вам принять решение - на какой платформе использовать MySQL в вашей системе.