MINHA CONFIGURAÇÃO ( exemplo )
Estou executando o Linux em uma instância do Amazon High CPU Extra Large EC2 com as seguintes especificações:
- 7 GB de memória
- 20 unidades de computação EC2 (8 núcleos virtuais com 2,5 unidades de computação EC2 cada)
- 1690 GB de armazenamento de instância local
- Plataforma de 64 bits
Eu tenho dois grandes bancos de dados MySQL em execução no mecanismo de armazenamento MyISAM. Um é de 2 GB e o outro de 500 MB. Eu gostaria de ter certeza de que o MySQL está usando o máximo de RAM possível / necessário para maximizar as velocidades de consulta. Eu sei que há um monte de MySQL opções de configuração de memória gosta key_buffer_size
e MyISAM_sort_buffer_size,
mas eu estou familiarizado com a otimização destes.
QUESTÕES
- Como verificar a memória que o MySQL está usando atualmente em um sistema Linux?
- Como se maximiza / otimiza o uso da memória MySQL?
- Supondo que minhas consultas e esquema sejam otimizados, que outras alterações devo considerar?
Respostas:
Este é um tópico difícil. Não pode ser respondida aqui, livros inteiros foram escritos sobre isso. Eu recomendo fazer o seu innodb_buffer_pool_size grande o suficiente. Se você estiver usando tabelas myisam, verifique key_buffer_size. Também table_cache e max_connections devem ser considerados.
Aqui está algo que pode ajudá-lo:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- Noções básicas sobre otimização de desempenho / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
EDITAR:
Como @ drew010 disse, é importante considerar o tipo de uso do DB. O ajuste para um banco de dados de leitura pesada é muito diferente de uma gravação pesada. Além disso, você pode considerar outras estratégias. Como Memcached, bancos de dados nosql, etc.
fonte
Se você precisa ter certeza de que o MySQL usa toda a memória necessária, você precisa mudar para o InnoDB. A menos que você use as
FULLTEXT
habilidades de pesquisa do MySQL , não haverá problemas sérios.No caso do MyISAM, vários caches são utilizados, incluindo buffers internos do MySQL e cache do sistema. Se você deseja um melhor desempenho, precisa deixar espaço para qualquer um dos caches, mas ainda não recomendo o MyISAM para esse fim, especialmente se seus bancos de dados tiverem muita gravação: o MyISAM bloqueia toda a tabela na gravação, enquanto o InnoDB bloqueia apenas as linhas afetadas.
Mesmo se você colocar todos os seus bancos de dados na memória, ainda poderá ter consultas de execução lenta devido a índices insuficientes ou outros motivos.
fonte