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:
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 :)
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 ...
fonte
Respostas:
Questões potenciais
No momento, tenho alguns problemas com o uso de SSDs para bancos de dados de produção
Benefícios Propostos
Dito isto, existem vários itens, pelo menos no papel, a favor dos SSDs no futuro:
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í:
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
fonte
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.
fonte
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
fonte
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
fonte
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.
fonte
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.
fonte