A otimização de desempenho do MySQL envolve muitos aspectos. Este artigo explica alguns parâmetros-chave no MySQL. Esses parâmetros são, até certo ponto, os parâmetros-chave que determinam o desempenho do banco de dados MySQL. Freqüentemente encontramos problemas de desempenho durante o gerenciamento e desenvolvimento de banco de dados, o que envolve otimização de desempenho do MySQL. Através da busca de informações na Internet e das próprias tentativas do autor, acho que os seguintes parâmetros do sistema são mais críticos:
Parâmetro principal um: back_log
O número de conexões que o MySQL precisa ter. Isso funciona quando o thread principal do MySQL recebe muitas solicitações de conexão em um curto período de tempo, e então o thread principal leva algum tempo (embora brevemente) para verificar as conexões e iniciar um novo thread.
O valor back_log indica quantas solicitações podem ser armazenadas na pilha em um curto período de tempo antes que o MySQL pare temporariamente de responder a novas solicitações. Somente se você espera muitas conexões em um curto período de tempo é necessário aumentá-lo, ou seja, esse valor é o tamanho da fila de escuta para conexões TCP/IP de entrada. Seu sistema operacional tem seu próprio limite para esse tamanho de fila. Tentar definir o back_log acima do limite do seu sistema operacional não terá efeito.
Ao observar sua lista de processos do host e encontrar um grande número de processos 264084 | usuário não autenticado | xxx.xxx.xxx.xxx | O valor padrão é 50, mudei para 500.
Parâmetro chave dois: Interactive_timeout
O número de segundos que o servidor aguarda ação em uma conexão interativa antes de fechá-la. Um cliente interativo é definido como um cliente usando a opção CLIENT_INTERACTIVE para mysql_real_connect(). O valor padrão é 28800, mudei para 7200.
Parâmetro chave três: key_buffer_size
Os blocos de índice são armazenados em buffer e compartilhados por todos os threads. key_buffer_size é o tamanho do buffer usado para blocos de índice, aumente-o para obter um melhor manuseio do índice (para todas as leituras e múltiplas gravações), até o máximo que você puder pagar. Se você torná-lo muito grande, o sistema começará a paginar e ficará muito lento. O valor padrão é 8388600 (8M), e meu host MySQL tem 2GB de memória, então mudei para 402649088 (400MB).
Parâmetro chave quatro: max_connections
O número de clientes simultâneos permitidos. Aumentar este valor aumenta o número de descritores de arquivo requeridos pelo mysqld. Este número deve ser aumentado, caso contrário, você verá muitos erros de conexão com frequência. O valor padrão é 100, mudei para 1024.
Parâmetro chave cinco: record_buffer
Cada thread que executa uma varredura sequencial aloca um buffer desse tamanho para cada tabela que varre. Se você fizer muitas varreduras sequenciais, talvez queira aumentar esse valor. O valor padrão é 131072 (128K), mudei para 16773120 (16M)
Parâmetro chave seis: sort_buffer
Cada thread que precisa ser classificado recebe um buffer desse tamanho. Aumentar esse valor acelera as operações ORDER BY ou GROUP BY. O valor padrão é 2097144 (2M), mudei para 16777208 (16M).
Parâmetro chave sete: table_cache
O número de tabelas abertas para todos os threads. Aumentar este valor aumenta o número de descritores de arquivo requeridos pelo mysqld. MySQL requer 2 descritores de arquivo para cada tabela aberta exclusiva. O valor padrão é 64, mudei para 512.
Parâmetro chave oito: thread_cache_size
O número de threads armazenados que podem ser reutilizados. Se houver, o novo thread será obtido do cache e, se houver espaço quando a conexão for desconectada, o thread do cliente será colocado no cache. Se houver muitos threads novos, esse valor variável poderá ser usado para melhorar o desempenho. Ao comparar as variáveis nos estados Connections e Threads_created, você pode ver a função desta variável. Eu configurei para 80.
Parâmetro chave nove: wait_timeout
O número de segundos que o servidor aguarda ação em uma conexão antes de fechá-la. O valor padrão é 28800, mudei para 7200.
Nota: O ajuste dos parâmetros pode ser feito modificando o arquivo /etc/my.cnf e reiniciando o MySQL. Este é um trabalho relativamente cauteloso e os resultados acima são apenas algumas das minhas opiniões. Você pode modificá-lo ainda mais de acordo com as condições de hardware do seu próprio host (especialmente o tamanho da memória).