Eu já fiz a longa entrada da conferência aqui, então apenas uma atualização rápida:os slides do PGEast foram postados e na próxima semana estarei na cada vez mais mal chamada MySQL Conference em Santa Clara, Califórnia.
Uma coisa pela qual sou conhecido agora é reclamar sobre unidades de estado sólido baratas e como elas são ruins para uso de banco de dados. A página wiki do Reliable Writes coleta a maior parte do plano de fundo aqui. A situação nos últimos anos tem sido que cada unidade barata no mercado não tem um cache de gravação seguro para uso em banco de dados. Todo cliente meu que comprou um dos drives SSD da Intel, por exemplo, o X25-M ou o X25-E não empresarial, sofreu pelo menos uma grande perda de dados por corrupção.
Para tornar uma unidade flash segura, você precisa ter um backup de bateria na unidade, pelos mesmos motivos que são necessários em controladores RAID de alto desempenho. Quando o banco de dados grava dados e usa a chamada de sistema fsync para garantir que seja liberado para o disco, você não pode gravar fisicamente esses dados com rapidez suficiente para deixar as pessoas felizes, nem no disco giratório nem no flash. A situação é um pouco pior até mesmo no flash, porque escrever pequenos commits de dados sem um cache também desgastará a unidade mais rapidamente. Adicione uma bateria, faça o controlador da unidade liberar todos os dados pendentes quando a energia cair e você pode tornar o SSD confiável o suficiente para bancos de dados.
Unidades corporativas realmente caras acertaram isso há algum tempo, mas o hardware adequado para uso doméstico ou em pequenas empresas tem sido escasso. A OCZ lançou sua unidade Vertex 2 Pro com um supercapacitor e liberação de gravação adequada no ano passado. O capacitor é a parte "Pro", e não confunda isso com o Vertex 2 comum. Eles custam cerca de US $ 650 por 100 GB de SSD e são muito rápidos. Mas você não pode ter apenas um disco rápido:eles falham, assim como qualquer outro componente do seu computador. E US$ 1.300 por um par de drives ainda os deixaram fora do alcance das pequenas lojas, e até mesmo um único excedeu meu orçamento pessoal de conserto de hardware doméstico.
Bem, agora há outra escolha. A Intel finalmente limpou seu ato aqui. Os novos drives da série 320 deles integram um conjunto de pequenos capacitores e lógica de desligamento adequada no drive. Eles até fizeram parte do marketing agora que estão fazendo certo, incluindo um briefing sofisticado sobre como funciona. A propósito, é aí que esse assunto está: se o fabricante escrever o cache corretamente, eles vão se gabar disso. Se você não ouvir nenhum comentário, isso significa que eles estragaram tudo, e a unidade vai comer seu banco de dados.
Há toda uma linha de produtos dessas novas unidades Intel disponíveis, a partir de um modelo de 40 GB abaixo de US$ 100, todos com a mesma confiabilidade de gravação. As unidades maiores são mais rápidas, porém, e eu queria algo mais rápido em todos os sentidos do que o disco rígido normal que estava substituindo. Esse ponto não chega até o modelo de US$ 220 e 120 GB, que tem uma velocidade de gravação sequencial mais rápida do que as unidades de terabyte que eu uso na maioria das vezes. Uma das unidades Intel 320 de 120 GB chegou em minhas mãos animadas no início desta semana.
Você pode encontrar os números completos da minha análise inicial no pgsql-performance. Os parâmetros básicos de desempenho são os esperados: 253 MB/s de leituras, 147 MB/s de gravações e respeitáveis 5.000 confirmações/segundo, todas as especificações e expectativas correspondentes. A única coisa que posso reclamar são os resultados aleatórios de leitura/gravação. Apesar das alegações de números muito mais altos, estou obtendo apenas cerca de 3.500 IOPS, traduzindo para 27 MB/s em uma carga de trabalho mista. Isso é aceitável, batendo em qualquer unidade regular, mas está no lado baixo à medida que o SSD avança. Não posso reclamar dado o preço – se eu quiser mais rápido, sempre posso gastar 3X mais pelo OCZ Vertex 2 Pro – mas é algo para estar ciente. Há um monte de comentários sem vergonha da Intel que entendem isso errado; a única revisão que vi até agora que captou o mesmo problema e o colocou na perspectiva adequada é a de Anand. Ele mostra a unidade da série 320 de 300 GB (que é ainda mais rápida do que uma que eu tenho) fornecendo velocidades do meio para o fundo do pacote em trabalho aleatório, que é onde está realisticamente. Isso não é inaceitável, é apenas importante entender o conjunto de compensações que essas unidades oferecem.
Se seus dados cabem em 120 GB, esta unidade é uma alternativa muito atraente para a configuração tradicional de banco de dados de alto desempenho. Obter um controlador RAID com cache de gravação com bateria e um par de unidades normalmente custa cerca de US$ 600, e você obtém apenas um desempenho de E/S aleatório razoável do resultado. Compre um par dessas unidades por cerca de US$ 450, use o software RAID para redundância e você estará muito à frente na maior parte do tempo. Apenas certifique-se de seguir as boas práticas de monitoramento SMART para essas unidades. Eles não duram para sempre, com o limite de gravação sendo um ponto de falha conhecido, mesmo que nada seja interrompido antes disso. No entanto, também existem muitos consumíveis com a tecnologia mais antiga, incluindo unidades de substituição, baterias de substituição e, às vezes, a necessidade de controladores extras como peças de reposição para sistemas críticos. Deve haver uma economia de custos com o SSD agora, desde que seus dados caibam no tamanho disponível. E o desempenho será um grande avanço se você estiver acessando o disco agora. A melhor maneira de aumentar o desempenho é adicionar mais RAM, mas como eventualmente esses dados precisam ir e voltar do disco, isso nem sempre é bom o suficiente.
Intel, você recebe minha aprovação oficial aqui: você finalmente fez a coisa certa, e ficarei feliz em recomendá-lo como fornecedor agora que você o fez. Ainda estou tentando descobrir o que vou fazer com meu servidor agora mais rápido do que nunca em casa, e esse é um bom problema para se ter.