Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Uso máximo de memória do MySQL


O uso máximo de memória do MySQL depende muito do hardware, suas configurações e o próprio banco de dados.

Hardware


O hardware é a parte óbvia. Quanto mais RAM, melhores e mais rápidos os discos ftw . Mas não acredite nessas cartas de notícias mensais ou semanais. MySQL não escala linear - nem mesmo em hardware Oracle. É um pouco mais complicado do que isso.

A conclusão é:não há uma regra geral para o que é recomendado para seu Configuração do MySQL. Tudo depende do uso atual ou das projeções.

Configurações e banco de dados


O MySQL oferece inúmeras variáveis ​​e switches para otimizar seu comportamento. Se você tiver problemas, você realmente precisa sentar e ler o manual (f'ing).

Quanto ao banco de dados -- algumas restrições importantes:
  • mecanismo de tabela (InnoDB , MyISAM , ...)
  • tamanho
  • índices
  • uso

A maioria das dicas do MySQL sobre stackoverflow lhe dirá sobre 5-8 configurações importantes. Em primeiro lugar, nem todos importam - por exemplo, alocar muitos recursos para o InnoDB e não usar o InnoDB não faz muito sentido porque esses recursos são desperdiçados.

Ou - muitas pessoas sugerem aumentar o max_connection variável -- bem, mal eles sabem que isso também implica que o MySQL alocará mais recursos para atender essas max_connections -- se necessário. A solução mais óbvia pode ser fechar a conexão do banco de dados em seu DBAL ou diminuir o wait_timeout para liberar esses tópicos.

Se você me entende - há realmente muito, muito para ler e aprender.

Motores


Os mecanismos de tabela são uma decisão muito importante, muitas pessoas se esquecem deles no início e, de repente, se veem lutando com um MyISAM de 30 GB de tamanho tabela que bloqueia e bloqueia toda a sua aplicação.

Eu não quero dizer que MyISAM é uma merda , mas InnoDB pode ser ajustado para responder quase ou quase tão rápido quanto MyISAM e oferece bloqueio de linha em UPDATE enquanto MyISAM bloqueia a tabela inteira quando ela é gravada.

Se você tem liberdade para rodar o MySQL em sua própria infraestrutura, você também pode querer conferir o servidor percona porque entre incluir muitas contribuições de empresas como Facebook e Google (eles sabem rápido), também inclui o próprio substituto do Percona para InnoDB , chamado XtraDB .

Veja minha essência para configuração do percona-server (e -client) (no Ubuntu):http://gist.github .com/637669

Tamanho


O tamanho do banco de dados é muito, muito importante - acredite ou não, a maioria das pessoas na Intarwebs nunca lidou com uma configuração MySQL grande e intensa, mas elas realmente existem. Algumas pessoas vão trollar e dizer algo como "Use PostgreSQL!!!111", mas vamos ignorá-las por enquanto.

A linha inferior é:a julgar pelo tamanho, a decisão sobre o hardware deve ser tomada. Você não pode realmente fazer um banco de dados de 80 GB rodar rápido em 1 GB de RAM.

Índices


Não é:quanto mais, melhor. Apenas os índices necessários devem ser definidos e o uso deve ser verificado com EXPLAIN . Adicione a isso que o EXPLAIN do MySQL é realmente limitado, mas é um começo.

Configurações sugeridas


Sobre estes my-large.cnf e my-medium.cnf arquivos - eu nem sei para quem foram escritos. Role o seu próprio.

Primário de ajuste


Um ótimo começo é o primer de ajuste . É um script bash (dica:você precisará do linux) que recebe a saída de SHOW VARIABLES e SHOW STATUS e o envolve em uma recomendação útil. Se o seu servidor já funcionou há algum tempo, a recomendação será melhor, pois haverá dados para baseá-los.

O primer de ajuste não é um molho mágico. Você ainda deve ler todas as variáveis ​​que ele sugere mudar.

Leitura


Eu realmente gosto de recomendar o mysqlperformanceblog . É um ótimo recurso para todos os tipos de dicas relacionadas ao MySQL. E não é só MySQL, eles também sabem muito sobre o hardware certo ou recomendam configurações para AWS, etc. Esses caras têm anos e anos de experiência.

Outro ótimo recurso é o planet-mysql , é claro.