:: DEVELOPER ZONE
A maioria dos testes seguintes são feitos no Linux com os benchmarks do MySQL, mas eles devem fornecer alguma indicação para outros sistemas operacionais e workloads.
Você obtêm um executável mais veloz quando ligado com -static.
No Linux, você irá obter o código mais rápido quando compilando com pgcc
e -03. Para compilar sql_yacc.cc com estas opções, você precisa de
cerca de 200M de memória porque o gcc/pgcc precisa de muita memória
para criar todas as funções em linha. Também deve ser configurado o parâmetro
CXX=gcc para evitar que a biblioteca libstdc++ seja incluida
(não é necessária). Perceba que com algumas versões do pgcc,
o código resultante irá executar somente em verdadeiros processadores Pentium,
mesmo que você utilize a opção do compilador para o código resultante que você
quer, funcionando em todos os processadores do tipo x586 (como AMD).
Só pelo fato de utilizar um melhor compilador e/ou melhores opções do compilador você pode obter um aumento de desempenho de 10-30% na sua aplicação. Isto é particularmente importante se você mesmo compila o servidor SQL!
Nós testamos ambos os compiladores Cygnus Codefusion e o Fujitsu, mas quando os testamos, nenhum dos dois era suficientemente livre de erros para que o MySQL compilasse com as otimizações.
Quando você compila o MySQL deve incluir suporte somente para os conjuntos
de caracteres que deseja usar. (Opção --with-charset=xxx).
As distribuições binárias padrão do MySQL são compiladas com suporte para todos
os conjuntos de caracteres.
Segue uma lista de algumas medidas que temos feito:
Se você utiliza o pgcc e compila tudo com -O6, o servidor
mysqld é 1% mais rápido do que com o gcc 2.95.2.
Se você liga dinamicamente (sem -static), o resultado é 13% mais
lento no Linux. Note que você ainda pode utilizar uma biblioteca do MySQL
dinamicamente ligada à sua aplicação cliente. É só o servidor que é crítico
para performance.
Se você corta seu binário mysqld com strip libexec/mysqld,
o binário gerado pode ficar até 4% mais rápido.
Para uma conexão de um cliente para um servidor em execução na mesma máquina,
se você conecta utilizando TCP/IP em vez de utilizar um arquivo socket Unix,
o rendimento é 7.5% mais lento no mesmo computador. (Se você fizer conexão à
localhost, o MySQL irá, por padrão, utilizar sockets).
Para conexões TCP/IP de um cliente para um servidor, conectando a um servidor remoto em outra máquina será 8-11% mais lento que conectando ao servidor local na mesma máquina, mesmo para conexões Ethernet de 100M.
Quando executar o nosso teste de benchamrk usando conexões seguras (todos os dados crptografados com suporte interno SSL) ele se torna 55% mais lento.
Se você compilar com --with-debug=full, a maioria das consultas será 20%
mais lentas. Algumas consultas podem demorar muito mais tempo (por exemplo, os
benchmarks do MySQL demonstram 35% de perda). Se utilizar --with-debug,
a queda será de apenas 15%. Para uma versão do mysqld
compilada com --with-debug=full, você pode desabilitar a verificação
de memória em tempo de execução iniciando-o com a opção --skip-safemalloc.
O resultado final neste caso deve estar próximo de quando compilado com
--with-debug.
Em um Sun UltraSPARC-IIe, Forte 5.0 é 4% mais rápido que gcc 3.2.
Em um Sun UltraSPARC-IIe, Forte 5.0 é 4% mais rápido em modo de 32 bits que em modo de 64 bits.
Compilando com gcc 2.95.2 para o ultrasparc com a opção
-mcpu=v8 -Wa,-xarch=v8plusa melhora a performance em 4%.
No Solaris 2.5.1, a MIT-pthreads é 8-12% mais lenta do que as threads nativas do Solaris em um único processador. Com mais carga/CPUs a diferença deve aumentar.
Executar com --log-bin deixa o mysqld 1 % mais lento.
Compilando no Linux-x86 com gcc sem frame pointers
-fomit-frame-pointer ou -fomit-frame-pointer -ffixed-ebp
deixa o mysqld 1-4% mais rápido.
A distribuição MySQL-Linux fornecida pela MySQL AB é normalmente compilada
com pgcc, mas vamos retornar ao uso do gcc pelo fato de um
bug no pgcc que gera o código que não executa no AMD.
Continuaremos a usar o gcc até que o bug seja resolvido. Neste meio
tempo, se você possui uma máquina que não seja AMD, você pode ter um binário
mais rápido compilando com o pgcc. O binário padrão do MySQL para Linux
é ligado estaticamente para conseguir mais desempenho e ser mais portável.
© 1995-2005 MySQL AB. All rights reserved.
