Mais RAM ou mais cores para um servidor de banco de dados MySQL?

5

Aqui está o cenário, que eu adoraria o seu aconselhamento especializado:

Eu tenho atualmente cerca de 2 GB de banco de dados, talvez o dobro disso em um ano. Eu quero o desempenho ideal do servidor para o servidor de banco de dados dedicado que eu vou encomendar, que será usado como backend para um site de tráfego bastante pesado executando o WordPress, fórum e mediawiki. A maior parte do tráfego do banco de dados deve ser somente leitura.

Então a questão é: eu realmente preciso de mais de 4GB de RAM? E eu deveria ir para 8 núcleos ou apenas 4? Um é mais importante que o outro?

[edit] Apenas como um acompanhamento, acabou fazendo um bom negócio em um servidor de 8 núcleos com 8 GB de RAM, então foi com isso. Fico feliz em saber que terei muito espaço para crescer.

    
por The How-To Geek 09.01.2010 / 08:29

3 respostas

6

questão interessante. Por favor, tente definir o gargalo da sua aplicação atual primeiro. A partir da sua descrição e de alguns conhecimentos práticos, acho que você tem quatro possíveis afunilamentos:

  • nic
  • ram
  • Taxa de transferência de
  • hd
  • cpu (velocidade)
  • cpu (núcleos)

Agora o ram não seria um problema, porque, como o db é apenas 2G, você pode armazenar não apenas todas as chaves e indizes, mas na verdade todo o db no ram tendo 2G, se você dimensionar (MyISAM-) key_buffer e / ou innodb_buffer_pool_cache de acordo! Você provavelmente estaria bem, mesmo com o & ram; dbsize, porque geralmente nem todas as partes de um banco de dados são usadas ao mesmo tempo (ymmv).

É claro que ram também é usado para tabelas de memória, ordenação e ordenação e algumas operações de junção, então você deve olhar para a complexidade das consultas que seu banco de dados faz, e se ele retorna conjuntos de resultados muito grandes. Eu não sei, mas acredito que nem wordpress nem mediawiki realizam operações realmente complexas. Então, basta obter uma quantidade moderada de memória RAM.

O HD é o gargalo usual para qualquer banco de dados grande, mas o seu pode ser armazenado em cache de qualquer maneira, e você diz que você leu principalmente operações, então eu diria: para um banco de dados grande normal, a regra geral seria : throughput hd é o principal gargalo, então: 1. compre hds e 2. não compre necessariamente os mais rápidos, mas compre muitos deles. No seu caso, eu diria: tudo é armazenado de qualquer maneira.

Quanto aos núcleos: O MySQL pode, de fato, tirar proveito de muitos núcleos, mas precisa principalmente deles para cálculos complexos, programas procedurais e operações de ordenação e mesclagem. Seple consultas como "Selecione * da tabela" ou mesmo selecione * da tabela onde ... "não se beneficiará muito de mais núcleos. Muitas conexões obterão benefícios menores. Meu palpite é que você deve preferir um processador mais rápido em muitos núcleos.

Eu acredito que você deve verificar o nic como o principal gargalo e pensar em um segundo (terceiro, quarto ...) nic, dependendo da quantidade de tráfego na sua interface principal.

Então, para resumir tudo, eu gastaria meu dinheiro (nessa ordem): - mais de um nic (se isso é realmente um gargalo) - um processador rápido - 2 - 4 núcleos - 2-4G ram com a opção de ligar 8G depois (mais barato que os núcleos, pelo menos) - melhor subsistema de disco possível (você não precisa de muito agora, mas ajudará você a expandir mais tarde)

Felicidades, Nik.

    
por 09.01.2010 / 09:18
6

Como afirma nikb, é importante entender sua aplicação, mas, em vez de saber disso, sugiro a seguinte regra geral.

A menos que apenas uma parte do seu banco de dados seja lida ou gravada rotineiramente, nenhuma quantidade de núcleos extras corresponderá aos benefícios de desempenho de ter todos os seus bancos de dados e dados auxiliares (índices, etc.) na memória. Núcleos extras serão úteis se você tiver lotes de clientes simultâneos acessando o seu ou você faz muito trabalho em segundo plano, como relatórios ou indexação.

Se eu fosse você, escolheria um servidor dual-socket baseado na série Intel 55xx e compraria apenas um processador 4-core e hyperthreaded com 3 módulos de memória DDR de 4GB (não deixe que alguém lhe venda 2 / 4/8 etc, uso de 55xx 3,6,9 etc ok). Dessa forma, você não apenas poderá adicionar um segundo processador idêntico no futuro, mas como esses chips são compatíveis com os futuros chips de 8 núcleos, você pode sempre trocar o que você inicialmente comprou.

Espero que isso seja de alguma ajuda.

    
por 09.01.2010 / 10:11
0

A sugestão de Nikb é sólida. Uma área adicional de consideração:

Quanta RAM (ou núcleos de CPU ou sistemas de disco) pode uma instância do seu acesso ao architexture do aplicativo / aplicativo?

Eu vi uma situação em que um aplicativo em um servidor quadcore com 14 GB de RAM rodava muito lentamente, embora o uso da CPU fosse menor que 25% e o uso de RAM fosse baixo. Descobriu-se que o mecanismo de aplicativos só podia acessar 1,5 GB de RAM. A instância do aplicativo foi maximizada, mesmo que a máquina tenha sido levemente afetada.

    
por 10.01.2010 / 11:21