Como aumentar o uso de memória no MySQL Server para melhorar a velocidade?


28

Eu tenho um servidor Windows 2008 com 8 GB de RAM executando IIS7 e MySQL. Eu estive monitorando o uso de memória, CPU e disco no servidor e descobri que o MySQL está usando apenas 250 MB de RAM, mantendo os discos muito ocupados, embora eu tenha bastante memória RAM disponível.

No SQL Server, posso definir facilmente a quantidade de memória que quero que use, estou procurando a mesma configuração no MySQL.

Como posso configurar o MySQL para usar mais memória e reduzir o uso da CPU e do disco?

Respostas:


20

table_cacheé a diretiva de configuração mais útil para alterar. Cada vez que o MySQL acessa uma tabela, ele carrega a tabela no cache. Se você possui um número alto de tabelas, é mais rápido armazená-las em cache.

Dê uma olhada nas variáveis ​​do servidor executando:

show status;

e ter um olhar para a variável open_tables. Se esse valor for igual ao seu table_cachevalor e opened_tablescontinuar subindo, será necessário aumentar o table_cachevalor no seu arquivo de configuração. Você encontrará um equilíbrio experimentando essas variáveis ​​durante os horários de pico. Você deseja configurá-lo para que, nos horários de pico, ocorra uma baixa quantidade opened_tablesmesmo após o servidor ficar parado por um longo período de tempo.

key_buffer_sizetambém é uma boa variável para experimentar. Essa variável afeta o tamanho do buffer do índice, e aumentar essa variável aumenta a velocidade de manipulação do índice do MySQL. Você pode examinar as variáveis ​​com o show variables;comando novamente e comparar key_read_requestscom key_reads. Idealmente, você deseja que a relação entre essas duas variáveis ​​seja a mais baixa possível e pode fazer isso aumentando o tamanho da key_buffer_size. Se você definir essa variável mais alto, terá menos gravações e leituras diretamente de e para o disco, que era sua principal preocupação.


11
Na verdade, o comando é show status; ver variáveis ​​de status como Open_tablese Opened_tables. table_cacheparece ter sido removido nas versões recentes do MySQL.
Matt Fenwick

5

Você precisa alterar os valores no my.cnfarquivo e reiniciar o MySQL, embora você possa alterar muitos deles enquanto o MySQL também estiver em execução ('SET GLOBAL VARIABLE = value ').

Você provavelmente vai querer olhar para aumentar key_buffer_size, sort_buffer, read_buffere table_cachepara começar e, provavelmente innodb_buffer_pool_size, se você tiver quaisquer tabelas InnoDB. É possível aumentar alguns desses valores (até duas ordens de grandeza), especialmente considerando o seu hardware. Os padrões do MySQL são extremamente conservadores e pareciam ter como objetivo os desktops de uso misto comuns de cerca de dez anos atrás. Ah, e esteja avisado de que a versão de 32 bits terá problemas ao usar mais de 2 GB de RAM.

Consulte o Manual do MySQL para obter mais informações e orientações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.