Como otimizar o tempo de resposta do MySQL

This entry was posted on Monday, 15 October, 2007

Sites com altas cargas podem demorar a responder quando um grande número de visitantes diferentes visita os sites consultando o mesmo servidor de banco de dados MySQL.

Há muitas maneiras de melhorar o tempo de resposta do MySQL: alterando o tamanho do cache, parando a resolução de DNS….

Há situações em que os servidores MySQL podem ficar lentos para responder, mas você consegue se logar na máquina, verifica que a situação está normal, a carga está ok, há poucas consultas em andamento, mas o MySQL não relatou nada sobre a sua sobrecarga.

Seguem algumas resoluções você pode tomar nestes casos:

1. Desabilitar a resolução de hostnames pelo DNS
Verifique se o MySQL está realizando muitas resoluções de DNS. Se há só maquinas locais se conectando a este banco, não há necessidade de efetuar tais resoluções.

O manual do MySQL informa que elas podem ser desabilitadas com a adição do parâmetro –skip-name-resolve.

Em sistemas baseados no Debian, como Ubuntu, Knoppix e, na maioria das distribuições, os arquivos de configuração do MySQL estão localizados em /etc/mysql/my.cnf

De forma a aplicar o parâmetro –skip-name-resolve na inicialização do mysqld, simplesmente, adicione-o na seção abaixo:

[mysqld]
…..
……
skip-name-resolve

* Importante: Quando esta opção estiver ativada, você poderá utilizar somente números IP na tabela de permissões do MySQL.

Exemplo de um benchmark com a resolução de hostname DNS habilitada

date; mysql -u root -h 192.168.1.4 ; date
Fri Jul 21 23:56:58 CEST 2006
ERROR 1130 (00000): Host ‘192.168.1.3′ is not allowed to connect to this MySQL server
Fri Jul 21 23:57:00 CEST 2006

Repare que leva em torno de 2 a 3 segundos para que o IP do cliente seja negado a se conectar.

Já com resolução de hostname DNS desabilitada:

date; mysql -u root -h 192.168.1.4 ; date
Fri Jul 21 23:56:37 CEST 2006
ERROR 1130 (00000): Host ‘192.168.1.3′ is not allowed to connect to this MySQL server
Fri Jul 21 23:56:37 CEST 2006

o servidor responde ao pedido instantaneamente.

2. Ativar a Cache de Query

A fim de aliviar a carga do servidor, verifique a memória destinada a cache das consultas:
mysql> SHOW STATUS LIKE ‘Qcache%’;

Para verificar a situação geral das variáveis de query_cache, utilize o comando:
mysql> SHOW VARIABLES LIKE ‘%query_cache%’;

Você precisa ter o cache ativado, em primeiro lugar (have_query_cache | YES) e certificar-se de que a query_cache_type está definida para ON. Ela é, normalmente, ativada por padrão na maioria das distribuições Linux.

Você pode aumentar o tamanho da cache. Ex: se você quiser aumentá-la para 50M, utilize:
mysql> SET GLOBAL query_cache_size = 52428800;

Se você desejar que esta configuração seja mantida quando restartar o MySQL, adicione as 2 linhas abaixo:

[mysqld]


query_cache_size = 52428800

query_cache_type = 1

3. Conclusão:

Após fazer essas alterações, mais consultas serão resolvidas através de cache e o servidor responderá mais rápido, porque realizará menos cálculos.

Fonte: [Debuntu]

Leia também essas notícias:

Navegue em modo texto no Linux com o Lynx

Linux Ubuntu game: America's Army

Jogos para Linux: Lunar Domination

Configuração de um servidor Fedora 8 com LAMP, Email, DNS, FTP, ISPConfig - Parte 3

Como Proteger as Entradas do GRUB com Senha

Ofertas Relacionadas
Apple Iphone 3gs 16gb Desbloqueado!
Apple Iphone 3gs 16gb Desbloqueado!
Mais info»
R$ 1,799.00
até 18x de 134.93
Iphone 3gs 32gb Desbloqueado 3.2mpx Gps Sygic Gr�tis!
Iphone 3gs 32gb Desbloqueado 3.2mpx Gps Sygic Gr�tis!
Mais info»
R$ 1,999.00
até 18x de 149.93
Apple Iphone 3gs 16g Belo Horizonte Desbloqueado Original
Apple Iphone 3gs 16g Belo Horizonte Desbloqueado Original
Mais info»
R$ 1,890.90
até 18x de 141.82
Vitrine TecnoBlog  

Popularity: 1% [?]

2 Responses to “Como otimizar o tempo de resposta do MySQL”

  1. Henrique Navarro
    Olá Aqua Tux,

    Estou escrevendo para avisá-lo de um erro no artigo, a primeira linhas que deve ser adicionada no arquivo my.cnf possui um ; que não deveria estar ali, ele faz com que o serviço do MySQL não suba.

    A correção é:
    [mysqld]


    query_cache_size = 52428800
    query_cache_type = 1

    É besteira mas pode atrapalhar alguém desatento.

    Mas o artigo é excelente, parabéns!

    Abraços,
    Henrique Navarro

  2. gumelo
    Muito obrigado por corrigir Henrique, às vezes um errinho põe todo o tutorial a perder…

    Valeu mesmo já corrigi lá.