Nós ulitizamos o GNU Autoconf, para que seja possível portar o MySQL para todos sistemas operacionais modernos com threads Posix funcionando e um compilador C++. (Para compilar somente o código cliente, um compilador C++ é necessário mas threads não.) Nós mesmos usamos e desenvolvemos o software primeiramente no Linux (SuSE e red Hat), FreeBSD e Sun Solaris (Versões 8 e 9).
Perceba que para alguns sistemas operacionais, o suporte nativo a thread funciona somente nas últimas versões. O MySQL compila com sucesso nas seguintes combinações de sistema operacional/pacote de thread:
AIX 4.x com threads nativas. See Secção 2.6.6.4, “Notas IBM-AIX”.
Amiga.
BSDI 2.x com o pacote incluído MIT-pthreads. See Secção 2.6.4.5, “Notas BSDI Versão 2.x”.
BSDI 3.0, 3.1 e 4.x com threads nativas. See Secção 2.6.4.5, “Notas BSDI Versão 2.x”.
SCO OpenServer with a recent port of the FSU Pthreads package. See Secção 2.6.6.9, “Notas SCO”.
SCO UnixWare 7.0.1. See Secção 2.6.6.10, “Notas SCO Unixware Version 7.0”.
DEC Unix 4.x com threads nativas. See Secção 2.6.6.6, “Notas Alpha-DEC-UNIX (Tru64)”.
FreeBSD 2.x com o pacote incluído MIT-pthreads. See Secção 2.6.4.1, “Notas FreeBSD”.
FreeBSD 3.x e 4.x com threads nativas. See Secção 2.6.4.1, “Notas FreeBSD”.
FreeBSD 4.x com Linuxthreads. See Secção 2.6.4.1, “Notas FreeBSD”.
HP-UX 10.20 com o pacote incluído MIT-pthreads ou DCE threads. See Secção 2.6.6.2, “Notas HP-UX Versão 10.20”.
HP-UX 11.x com as threads nativas. See Secção 2.6.6.3, “Notas HP-UX Versão 11.x”.
Linux 2.0+ com LinuxThreads 0.7.1+ ou
glibc
2.0.7+. See
Secção 2.6.2, “Notas Linux (Todas as versões)”.
Mac OS X Server. See Secção 2.6.5, “Notas Mac OS X”.
NetBSD 1.3/1.4 Intel e NetBSD 1.3 Alpha (Necessita GNU make). See Secção 2.6.4.2, “Notas NetBSD”.
Novell NetWare 6.0. See Secção 2.6.8, “Notas Novell NetWare”.
OpenBSD > 2.5 com threads nativas. OpenBSD < 2.5 com o pacote incluído MIT-pthreads . See Secção 2.6.4.3, “Notas OpenBSD”.
OS/2 Warp 3, FixPack 29 e OS/2 Warp 4, FixPack 4. See Secção 2.6.7, “Notas OS/2”.
SGI Irix 6.x com threads nativas. See Secção 2.6.6.8, “Notas SGI Irix”.
Solaris 2.5 e superior com threads nativas nas plataformas SPARC e x86. See Secção 2.6.3, “Notas Solaris”.
SunOS 4.x com o pacote incluído MIT-pthreads. See Secção 2.6.3, “Notas Solaris”.
Tru64 Unix
Windows 9x, Me, NT, 2000 e XP. See Secção 2.6.1, “Notas Windows”.
Perceba que nem todas as plataformas são apropriadas para executar o MySQL. Os seguintes fatores determinam se uma certa plataforma é apropriada para uma missão crítica pesada:
Estabilidade geral da biblioteca thread. Uma plataforma pode ter excelente reputação, entretanto, se a biblioteca thread é instável no código que é usado pelo MySQL, mesmo se todo o resto for perfeito, o MySQL irá ser tão estável quanto a biblioteca thread.
A habilidade do kernel e/ou a biblioteca thread tirar vantagem do SMP em sistemas multi-processados. Em outras palavras, quando um proceesso cria uma thread, deve ser possível para aquela thread executar em uma CPU diferente que o processo original.
A habilidade do kernel e/ou a biblioteca thread executar
várias threads que adiquire/libera um bloqueio mutex sobre
uma pequena região crítica frequentemente sem trocas de
contexto excessivos. Em outras palavras, se a
implementação de pthread_mutex_lock()
requisitar a CPU muito rapidamente, isto irá afetar o MySQL
tremendamente. Se esse detalhe não estiver sendo cuidado,
adicionar CPUs extras podem deixar o MySQL mais lento.
Estabilidade e performance geral do sistema de arquivos.
Habilidade do sistema de arquivos em lidar com arquivos grandes de forma eficiente, se suas tabelas forem grandes.
Nosso nível de experiência aqui na MySQL AB com a plataforma. Se nós conhecemos bem uma plataforma, introduzimos otimizações/correçoes específicas para ela habilitadas na hora da compilação. Nós também podemos fornecer conselhos sobre como configurar seu sistema otimizadamente para o MySQL.
O volume de testes feitos internamente de configurações similares.
O número de usuários que tem executado o MySQL com sucesso naquela plataforma em configurações similares. Se esse número for alto, as chances de se ter alguma surpresa específica da plataforma fica muito menor.
Baseado nos critérios acima, as melhores plataformas para a execução do MySQL até este ponto são o x86 com SuSe Linux 8.2, kernel 2.4 e ReiserFS (ou qualquer distribuição Linux similar) e Sparc com Solaris (2.7-9). FreeBSD vem em terceiro, mas realmente temos esperanças que ele irá se unir ao clube dos tops uma vez que a biblioteca thread está melhorando. Nós também acreditamos que em certo ponto iremos estar aptos para incluir todas as outras plataformas em que o MySQL compila e executa, mas não tão bem e com o mesmo nível de estabilidade e performance, na categoria superior. Isto necessitará de algum esforço da nossa parte em cooperação com os desenvolvedores dos componentes do Sistema Operacional/Biblioteca que o MySQL depende. Se você tiver interesse em melhorar algum de nossos componentes, está em uma posição para influenciar seu desenvolvimento, e precisa de instruções mais detalhadas sobre o que o MySQL necessita para uma melhor execução, envie um e-mail para lista de email ``insternals'' do MySQL. See Secção 1.7.1.1, “As Listas de Discussão do MySQL”.
Por favor, perceba que a comparação acima não é para dizer que um SO é melhor ou pior que o outro em geral. Nós estamos falando sobre a escolha de um SO para um propósito dedicado: executar o MySQL, e comparamos as plataformas levando isto em consideração. Desta forma, o resultado desta comparação seria diferente se nós incluíssemos mais detalhes. E em alguns casos, a razão de um SO ser melhor que o outro pode ser simplesmente porque colocamos mais esforço nos testes e otimização para aquela plataforma em particular. Estamos apenas colocando nossas observações para ajudá-lo na decisão de qual plataforma usar o MySQL na sua configuração.
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.