Escalando bancos de dados com discos rígidos SSD baratos


25

Espero que muitos de vocês estejam trabalhando com sites direcionados a bancos de dados de alto tráfego, e é provável que seus principais problemas de escalabilidade estejam no banco de dados. Eu notei algumas coisas ultimamente:

  1. A maioria dos bancos de dados grandes exige uma equipe de DBAs para escalar. Eles lutam constantemente com as limitações dos discos rígidos e acabam com soluções muito caras (SANs ou RAIDs grandes, janelas de manutenção freqüentes para desfragmentar e reparticionar etc.). O custo anual real da manutenção desses bancos de dados está na faixa de US $ 100 mil a US $ 1 milhão. muito íngreme para mim :)

  2. Finalmente, temos várias empresas como Intel, Samsung, FusionIO etc. que começaram a vender discos rígidos SSD extremamente rápidos e acessíveis, com base na tecnologia SLC Flash. Essas unidades são 100 vezes mais rápidas em leitura / gravação aleatória do que as melhores unidades de disco giratório do mercado (até 50.000 gravações aleatórias por segundo). O tempo de busca é praticamente zero, portanto o custo da E / S aleatória é o mesmo da E / S sequencial, o que é incrível para os bancos de dados. Essas unidades SSD custam entre US $ 10 e US $ 20 por gigabyte e são relativamente pequenas (64 GB).

Portanto, parece haver uma oportunidade para evitar os enormes custos de escalar bancos de dados da maneira tradicional, simplesmente criando uma matriz RAID 5 grande o suficiente de unidades SSD (o que custaria apenas alguns milhares de dólares). Então, não nos importamos se o arquivo do banco de dados está fragmentado e podemos pagar 100 vezes mais gravações de disco por segundo sem precisar distribuir o banco de dados por 100 eixos. .

Alguém mais está interessado nisso? Estou testando algumas unidades SSD e posso compartilhar meus resultados. Se alguém neste site já resolveu o gargalo de I / O com SSDs, adoraria ouvir suas histórias de guerra!

PS. Eu sei que existem muitas soluções caras por aí que ajudam na escalabilidade, por exemplo, as SANs baseadas em RAM e comprovadas pelo tempo. Quero deixar claro que até US $ 50 mil são muito caros para o meu projeto. Preciso encontrar uma solução que não custe mais que US $ 10 mil e não leve muito tempo para ser implementada.


Dave, NXC e Burly,

Obrigado por suas respostas! Gostaria de esclarecer que a palavra "barato" é muito importante na minha situação. Então, eu tenho que usar servidores Dell baratos (US $ 4K 2950s que possuem apenas 8 bancos de memória). Já tenho 32 GB de RAM instalada, portanto não posso continuar dimensionando dessa maneira. Além disso, adicionar RAM não o salva dos gargalos WRITE do disco, que é o meu principal problema no momento.

Eu costumava me preocupar com a vida útil dos SSDs, mas depois de ler sobre os algoritmos modernos de nivelamento de desgaste, tenho certeza de que essas unidades durarão o tempo suficiente. Meu banco de dados grava 300 GB por dia e projeta ultrapassar 1 TB por dia em 2009. Os SSDs corporativos foram projetados para lidar com cerca de 10 TB de gravações por dia em vários anos.

Eu discordo do argumento de Burly de que é preciso muito trabalho para migrar do SAS para o SSD. Meu banco de dados é um espelho síncrono, para que eu possa atualizar um lado do espelho, observá-lo por alguns meses e, se explodir, posso executar o failover no segundo servidor que ainda possui os bons discos rígidos SAS antigos ...


2
BTW, embora você indique como o desempenho aprimorado reduziria potencialmente os custos de hardware, você não expressa claramente como os SSDs reduziriam seus principais custos - trabalho. Estou assumindo que provavelmente estão ficando com o fato de que uma redução no tamanho da instalação podem reduzir seus reqs pessoal
Burly

2
Meu banco de dados ficou em execução feliz na produção por 3 anos sem nenhum DBAs ou consultores em tempo integral. Em seguida, a carga aumentou até o ponto em que encontramos os gargalos de E / S. Portanto, talvez eu precise pagar muito dinheiro aos DBAs para particionar e desfragmentar o banco de dados. Ou apenas obtenha alguns SSDs baratos.
Dennis Kashkin

Atualizei minha resposta para discutir as restrições de custo que você adicionou. Dependendo dos requisitos de espaço, tamanho, desempenho, manutenção e modificação do seu DB, os SSDs certamente podem oferecer uma solução econômica. O design da solução e a análise de custos estão além do nosso escopo aqui. Boa sorte!
22890 Burly

Você está bebendo muito koolaid, o SSD é, na melhor das hipóteses, 1,5x mais rápido para leitura do que uma unidade RAID, mas as gravações são mais lentas que os discos magnéticos. Um SANS baseado em fibra com um RAID de alta velocidade destruirá qualquer SSD, por melhor que seja.
TravisO

Só queria compartilhar - estamos executando um banco de dados de 400 GB em SSDs há 5 meses. Esse banco de dados recebe muita atividade de gravação (até 1200 transações por segundo). Até o momento não tivemos problemas, e o desempenho foi dramaticamente melhor em comparação aos RAID10s com unidades SAS de 15K rpm. Os discos permanecem 96% ociosos. Portanto, considerando que os SSDs estão se tornando incrivelmente baratos agora (US $ 600 por unidade Intel de 160 GB), eu diria que essa é a melhor maneira de escalar E / S do que as SANs.
Dennis Kashkin

Respostas:


20

Questões potenciais

No momento, tenho alguns problemas com o uso de SSDs para bancos de dados de produção

  • A maioria das transações de banco de dados na maioria dos sites é de leitura e não de gravação. Como Dave Markle disse, você maximiza esse desempenho com a RAM primeiro.
  • Os SSDs são novos nos mercados mainstream e corporativo e nenhum administrador que se preze vai mover um banco de dados de produção que atualmente exige discos de 15K RPM U320 em RAID5, comunicando-se por meio de um canal de fibra a uma tecnologia não comprovada.
  • O custo da pesquisa e dos testes para mudar para essa nova tecnologia, examiná-la em seu ambiente, atualizar os procedimentos operacionais e assim por diante é um custo inicial maior, tanto em termos de tempo quanto em dinheiro, do que a maioria das lojas tem de sobra.

Benefícios Propostos

Dito isto, existem vários itens, pelo menos no papel, a favor dos SSDs no futuro:

  • Menor consumo de energia em comparação com um disco rígido
  • Geração de calor muito menor
  • Maior desempenho por watt em comparação com um disco rígido
  • Taxa de transferência muito maior
  • Latência muito menor
  • A maioria dos SSDs da geração atual possui milhões de ciclos de resistência de gravação, portanto, a resistência de gravação não é um problema como era antes. Veja um artigo um pouco datado aqui

Portanto, para uma determinada referência de desempenho, quando você considera o custo total de propriedade, incluindo energia direta e custos indiretos de refrigeração, os SSDs podem se tornar muito atraentes. Além disso, dependendo dos detalhes do seu ambiente, a redução no número de dispositivos necessários para um determinado nível de desempenho também pode resultar na redução dos requisitos de pessoal, reduzindo os custos de mão-de-obra.

Custo e desempenho

Você adicionou que possui uma restrição de custo abaixo de US $ 50 mil e deseja realmente mantê-la abaixo de US $ 10 mil. Você também declarou em um comentário que pode obter alguns SSDs "baratos", iludindo que os SSDs serão mais baratos que os DBAs ou consultores. Isso pode ser verdade, dependendo do número de horas que você precisaria de um DBA e se é um custo recorrente ou não. Não posso fazer a análise de custos para você.

No entanto, uma coisa que você deve ter muito cuidado é o tipo de SSD que você recebe. Nem todos os SSDs são criados iguais. De um modo geral, os SSDs "baratos" que você vê à venda no valor de US $ 200-400 (20/11/2008) são destinados a ambientes de baixo consumo de energia / calor, como laptops. Na verdade, essas unidades têm níveis de desempenho mais baixos em comparação com um HDD de 10K ou 15K RPM - especialmente para gravações. As unidades de nível empresarial que têm o desempenho matador de que você fala - como a série Mtron Pro - são muito caras. Atualmente eles estão por aí:

  • 400 USD para 16 GB
  • 900 USD para 32 GB
  • 1400 USD por 64 GB
  • 3200 USD por 128 GB

Dependendo dos requisitos de espaço, desempenho e redundância, você pode facilmente gastar seu orçamento.

Por exemplo, se seus requisitos exigissem um total de 128 GB de armazenamento disponível, o RAID 0 + 1/10 ou o RAID 5 com 1 hotspare seria ~ $ 5600

Se, no entanto, você precisasse de um TB de armazenamento disponível, o RAID 0 + 1/10 seria de ~ $ 51K e o RAID 5 com 2 hotspares seria de ~ $ 32K.

Imagem Grande

Dito isto, a instalação, configuração e manutenção de um grande banco de dados de produção requer um indivíduo altamente qualificado. Os dados no DB e os serviços fornecidos a partir desses dados são de valor extremamente alto para empresas com esse nível de requisitos de desempenho. Além disso, há muitas coisas que simplesmente não podem ser resolvidas jogando o hardware no problema. Um DBMS configurado incorretamente, um esquema de banco de dados ruim ou uma estratégia de indexação podem / destruir / o desempenho de um DB. Veja os problemas que o Stackoverflow enfrentou na migração para o SQL Server 2008 aqui e aqui. O fato é que um banco de dados é um aplicativo extenuante não apenas em disco, mas também em RAM e CPU. Equilibrar o problema de desempenho multivariado junto com integridade, segurança, redundância e backup de dados é um pouco complicado.

Em resumo, embora eu ache que toda e qualquer melhoria na tecnologia de hardware e software seja bem-vinda pela comunidade, a administração de bancos de dados em larga escala - como o desenvolvimento de software - é um problema difícil e continuará a exigir trabalhadores qualificados. Uma determinada melhoria pode não colher os custos de redução de mão-de-obra que você ou uma empresa pode esperar.

Um bom ponto de partida para algumas pesquisas pode ser o site / blog de Brent Ozar aqui . Você pode reconhecer o nome dele - foi ele quem ajudou a equipe do stackoverflow com seus problemas de desempenho no MS SQL Server 2008. Seu blog e recursos ele vincula para oferecer um pouco de abrangência e profundidade.

Atualizar

O Stackoverflow em si está seguindo a rota baseada no SSD do consumidor para armazenamento. Leia aqui: http://blog.serverfault.com/post/our-storage-decision/

Referências


Excelente resposta.
NotMe

Você passou muito tempo com isso: P
TravisO 21/08/08

Explicações impressionantes. Cortado em madeira para todos. Bom trabalho!
BerggreenDK

4

Se você tem um site com muito tráfego e que pode se beneficiar de um SSD para aumentar o desempenho de gravação, provavelmente terá um problema com a vida útil do SSD, por isso ainda não os vendi por isso.

Com isso em mente, o que fazer com bancos de dados com altos níveis de leitura? A resposta é simples: congestione o servidor com o máximo de RAM possível. Você descobrirá que as tabelas mais quentes quase sempre são mantidas no cache da RAM, e qualquer grande ocorrência no disco provavelmente se deve a uma grande tabela ou verificação de índice, que geralmente pode ser otimizada com a indexação adequada.


Eu revisitaria seu comentário sobre a preocupação da vida útil do SSD. Em termos de MTBF, o SSD tem uma classificação muito mais alta que um HDD. Em termos de resistência ao ciclo de gravação - anteriormente um problema, a geração atual é> 1 milhão de ciclos de gravação, tornando isso um não-problema, especialmente nas configurações de RAID.
226 Burly

... O fato de os SSDs não terem décadas de experiência na produção significa que eles não são comprovados.
227 Burly

SSDs são mais lentos em escrever do que HDs
TravisO

Os SSDs geralmente são substancialmente mais rápidos em gravações aleatórias, particularmente gravações aleatórias em 4K. Eles podem ser mais lentos para gravações seqüenciais, mas isso não é necessariamente importante para servidores de banco de dados.
28410 ChrisInEdmonton

1

Eu trabalho como DBA há mais de 5 anos e pensar em maneiras de melhorar o desempenho do DB está sempre na parte de trás da minha mina. Eu tenho observado o espaço do SSD e acho que eles definitivamente estão se tornando cada vez mais uma opção viável.

Veja isso;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

Há também um novo produto produzido pela Acard, chamado ANS-9010, que é uma versão aprimorada do GC-Ramdisc, que permite usar RAM DDR2 para criar uma unidade SATA (até 64 gig) usando DDR2 sticks com 400MB / s teóricos. máximo.

http://techreport.com/articles.x/16255/3

^^ Mas a outra coisa útil nesse artigo é que ele compara o ANS-9010 com todos os players do mercado de SSD e verifica-se que a Intel possui um SSD x25-E de 64GB, que é praticamente comparável a um disco rígido de hardware.

O que me preocuparia com o SSD é usá-los com todo o estresse que um grande banco de dados os faria passar, e você teria que usar o ataque para espelhar as unidades, o que significa que você está pagando o dobro;

E a desvantagem do ramdisk de hardware é que a bateria, no caso de um corte de energia, apenas a alimenta por tanto tempo, para que você tenha que trabalhar de uma maneira sofisticada para fazer o backup. Acredito que você também pode comprar um plugue para eles, mas isso ainda depende do seu no-break.

Sugiro que você use o disco ram de hardware para o arquivo temporário DB e Windows swap - e coloque o banco de dados no Intel X25-E Extreme (aproximadamente 600 USD por 64 GB).

De qualquer forma, isso gritaria e deixaria todo mundo com ciúmes.

(Considere também usar outro ANS-9010 para hospedar o site)

Cheers, Dave


1

Acabamos de montar um servidor w2k3 r2 de 64 bits Sql 2008 no espelho híbrido duplo Seagate Momentus XT de 2,5 polegadas - 1/4 de curso para OS e 1/4 de curso para DB. Então, estavam usando 125 GB para OS e 125 GB para DB. estavam recebendo 1500MB / s para 1900MB / s leituras seq. Em um Intel i7 2600K 3.4Ghz 8GB


0

Existem produtos no mercado, como este, que fazem esse tipo de coisa. Além disso, como o outro pôster diz, adicionar RAM extra ao servidor de banco de dados fornecerá melhores taxas de acertos do cache, o que reduzirá o tráfego de disco.

Os servidores Opteron de 8 soquetes, como o Sun X4600 , permitem colocar 256 GB de RAM neles por preços ainda mais baratos do que uma grande equipe de DBA. Você também pode considerar o uso de arquivos simples em vez de um DBMS (como a empresa fez), o que proporcionará um desempenho melhor do que um DBMS. Nesse caso, uma SAN fornecerá um grau de integridade dos dados. No entanto, você precisará projetar sua estratégia de acesso a dados com cuidado para evitar confusão. Aparentemente, algumas roupas pontocom de grande volume fazem isso. É consideravelmente mais eficiente que um DBMS, permitindo que o hardware bastante adequado para pedestres lide com grandes cargas e evita taxas de licenciamento do DBMS.


-1

As unidades SSD são baseadas na memória flash NAND (MLC ou SLC). Se você estiver comprando unidades SSD em um formato SATA (2 ou 3), estará limitando o desempenho que pode obter delas. Normalmente, as unidades SSD baseadas no rápido controlador Sandforce SF-1200 produzem leituras de 220 MB / segundo e gravações de 205 MB / segundo - muito mais rápido que um disco rotativo mecânico antiquado.

No entanto, se você mudar para uma solução PCIe como o FusioIO, que não possui o conector lento SATA 2 ou SATA 3 envolvido, estará procurando soluções 10 a 50 vezes mais rápidas que os touros mecânicos rotativos (quero dizer, discos).

Portanto, para sua solução "barata", vá com um SATA 2/3 SDD baseado no controlador Sandforce SF-1200. Isso proporcionará uma melhoria de velocidade 3-5 vezes maior (com base na experiência do mundo real). Se você tiver o orçamento, vá para o FusioIO. Nada será superado em termos de desempenho. É incrivelmente rápido. Espere gastar entre US $ 20.000 e US $ 50.000.


2
Falácia. Um SSD moderno é bom para cerca de 50.000 IOPS, obtendo throughput de 580mb. O SAS faz menos de 500 IOPS. Bancos de dados não são servidores de arquivos.
TomTom
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.