Sugestão de sistema de arquivos Linux para o MySQL com uma carga de trabalho 100% SELECT

2

Eu tenho um banco de dados MySQL que contém milhões de linhas por tabela e há 9 tabelas no total. O banco de dados está totalmente preenchido, e tudo o que estou fazendo são leituras, ou seja, não há INSERTs ou UPDATEs. Os dados são armazenados em tabelas MyISAM.

Dado este cenário, qual sistema de arquivos linux funcionaria melhor? Atualmente, tenho o xfs. Mas eu li em algum lugar que o xfs tem um desempenho de leitura horrível. Isso é verdade? Devo transferir o banco de dados para um sistema de arquivos ext3?

Obrigado

    
por gmemon 23.04.2010 / 06:40

4 respostas

2

Em geral, os dois decentes FSs Linux atualmente são XFS e EXT4, ambos sistemas de arquivos baseados em extensão.

Eu não vi nenhuma diferença séria entre os dois, mas ambos são notavelmente melhores que EXT3.

Possivelmente, as melhores coisas que você pode fazer são:

  • Desativar o atime ( notatime opção de montagem)
  • Acima dos buffers do MySQL para ~ 2/3 da RAM física (deixando o restante para o cache de disco)
  • Verifique sua indexação com EXPLAIN SELECT ...
  • Descarregue o FS e restaure os arquivos totalmente escritos, isso reduz a fragmentação
por 26.04.2010 / 05:28
1

Se você é sério sobre o desempenho do seu banco de dados MySQL, sugiro strongmente fazer seus próprios benchmarks em um ambiente de teste. O desempenho do sistema de arquivos pode variar significativamente de uma versão do kernel para outra, e a escolha pode depender consideravelmente de sua carga de trabalho exata.

Para uma comparação simples, basta configurar um servidor de teste com a mesma versão do kernel do seu sistema de produção e usar o sysbench para comparar o xfs, ext3 e ext4.

Para ter uma visão melhor, você deve restaurar um backup recente do banco de dados no seu servidor de teste e criar alguns scripts que geram carga semelhante à sua carga de trabalho.

Além disso, toda vez que você planeja atualizar o kernel em sua máquina de produção, você deve executar novamente os benchmarks, para ver se há regressões. Como você não pode alternar facilmente os sistemas de arquivos nesse ponto (bem, isso depende da sua configuração), você deve pelo menos garantir que o desempenho não seja prejudicado após a atualização.

Editar:

BTW, você pode encontrar muitos bons conselhos no Blog de desempenho do MySQL .

    
por 24.04.2010 / 10:50
1

Experimente o MySQLTuner apenas para ter uma ideia de onde está o seu problema. Eu imagino que é um desempenho de índice ruim ou uma taxa de acertos de cache muito ruim. Provavelmente muito pequeno para o seu conjunto de dados sem saber mais informações.

wget mysqltuner.pl (nome de domínio polonês com redirecionamento para o script real.)

E como outros pôsteres, duvido muito que o desempenho do disco ou a escolha do sistema de arquivos seja o gargalo.

    
por 05.09.2010 / 05:14
0

Qual é o tamanho do banco de dados real? Você mencionou milhões de linhas, mas isso não diz o tamanho de cada linha. Onde estou indo com isso, é que se você não fizer nenhuma atualização e este é apenas um banco de dados somente leitura, considere carregá-lo na memória (supondo que ele se encaixa e supondo que você tenha RAM suficiente).

    
por 24.04.2010 / 11:02