Reduzir o uso de memória do MySQL em uma caixa de desenvolvimento

3

No meu mac, após uma nova reinicialização com zero conexões, o MySQL está usando 40MB de memória, 188MB de memória virtual (banco de dados em disco paginado?) E 16 threads.

Como há apenas uma pessoa acessando o servidor (eu), e eu não a acerto com muita frequência ao longo do dia, como posso configurar o MySQL para consumir menos memória quando está ocioso?

Não me importo de consumir tantos recursos quantos forem necessários para realizar consultas enquanto estão em execução, mas gostaria de reduzir a área útil entre as sessões de desenvolvimento. Por causa de como os sites em que trabalho funcionam, ele sempre só executa uma consulta por vez, talvez duas consultas simultâneas muito ocasionalmente.

Estou executando o MySQL no Mac OS X Server 10.7, usando o download oficial da Oracle, sem alterações de configuração.

40MB normalmente é bom, mas ultimamente eu tenho feito algum trabalho de desenvolvimento não-MySQL que realmente precisa de cada polegada de memória do meu sistema, e eu prefiro não iniciar / parar o MySQL algumas vezes por dia.

Abhi Beckert
fonte
Como a maioria dos bancos de dados tenta ler o máximo possível de dados na memória para torná-los mais rápidos, você está lutando uma batalha perdida. Roland tem boas idéias, mas se você quiser reciclar o processo mysqld, por que não colocá-lo em um cron job? Além disso, a RAM é tão barata agora.
Certamente o MySQL não precisa consumir memória quando está inativo? Não pode haver nenhum cache preenchido - esses números são o que ele usa depois de iniciar com zero consultas já executadas. A RAM é barata, mas eu tenho apenas tantos slots, um dos meus projetos atuais envolve o processamento de dezenas de gigabytes de dados. Eu sei que algumas empresas vps recomendaram configurações para servidores com pouca memória, estou procurando algo semelhante.
Abhi Beckert

Respostas:

3

Depende de qual mecanismo de armazenamento sua tabela está usando.

Se tudo que você usa é MyISAM, pode desabilitar totalmente o InnoDB da seguinte maneira:

Passo 01) Adicione esta opção ao my.cnf

[mysqld]
skip-innodb
query-cache-type=0

Passo 02) reinicie o mysql

Ao fazer essas duas etapas

  • o mysqld começa mais rápido
  • pool de buffers InnoDB padrão ( innodb_buffer_pool_size ) não é criado
    • 8M padrão antes do MySQL 5.5
    • 128M padrão começando com o MySQL 5.5
  • Com query_cache_type = 0, o cache de consulta está desativado
RolandoMySQLDBA
fonte
Nós temos alguns milhares de clientes, eu preciso ser capaz de carregar qualquer um dos seus sites no meu servidor de desenvolvimento a qualquer momento. Muitos usam o InnoDB. É possível definir o tamanho do pool para algo menor?
Abhi Beckert
1
O MySQL é necessário para isso. Definir innodb _buffer_pool_size para 4M em my.cnf
RolandoMySQLDBA
Desculpe grande erro de digitação: reinicialização do MySQL é necessária para fazer isso. Definir innodb _buffer_pool_size para 4M em my.cnf
RolandoMySQLDBA