Por que alguém desejaria colocar o log do DB em um SSD?

3

Eu continuo ouvindo sobre pessoas que querem obter SSD para seus bancos de dados. Mas em vez de colocar suas tabelas no SSD, muitas vezes as pessoas querem colocar o seu log DB no SSD enquanto deixam suas tabelas em discos rígidos comuns.

Mas por que alguém iria querer fazer isso?

O log usa gravações sequenciais. E a velocidade de IO sequencial do SSD não é mais rápida do que os seus discos regulares. Então, colocar o log no SSD não forneceria nenhum ganho de desempenho.

A área em que o SSD é muito mais rápido do que os discos comuns é o IO aleatório. Então, o mais sensato a fazer é colocar suas tabelas no SSD enquanto deixa o registro em discos comuns?

Estou sentindo falta de algo?

    
por Continuation 21.06.2009 / 01:54

2 respostas

4

Sim, os logs de transações geralmente têm uma taxa de transferência constante, mas muito baixa, quando comparados com o banco de dados inteiro. Mas o throughput é absolutamente a primeira prioridade, quando é atrasado, todas as atualizações no banco de dados precisam esperar. É economicamente vantajoso gravar logs em um espelho, ou mesmo em um RAID5, mas somente enquanto você puder manter suas gravações sequenciais. Se você compartilhar os discos com qualquer outra coisa, seja um arquivo de dados, um índice ou uma coleção de filmes pornográficos, você estará colocando sua performance em risco.

Em ambientes maiores, geralmente há instâncias de banco de dados múltiplas centralizadas no mesmo armazenamento. É claro que você não quer colocar os logs juntos no mesmo conjunto de drives, já que várias gravações sequenciais combinadas fazem, de fato, uma grande gravação aleatória.

Uma opção é dedicar um espelho separado (dois discos) a cada seqüência de log. Mas outra opção - e economicamente viável em alguns casos - é manter as coisas simples e usar SSD único para todos os arquivos de log, para que você tenha caminho de dispositivo e dados separado, com bom desempenho aleatório. Na verdade, qualquer um dos vários logs nunca atrasará qualquer banco de dados. Eu vi essa configuração, mas eu não recomendo (a não-volatilidade do SSD é um conceito muito frágil para mim).

[*] - alguns mecanismos misturam logs de redo com informações de desfazer para complicar as coisas (por exemplo, MS SQL Server)

    
por 21.06.2009 / 11:24
2

Você sempre deseja liberar seus logs para um armazenamento não volátil (seja para discos ou flash), e os SSDs baseados em DRAM podem ser mais rápidos para gravar do que os discos rígidos.

Os logs de transações quase sempre devem ser armazenados em cache na memória para desempenho, portanto, a velocidade de leitura não entra realmente nisso.

Portanto, você deve conseguir uma taxa de transferência de gravação mais alta colocando os logs de transação no SSD.

Como um aparte, uma vez eu experimentei colocar logs de transações innodb do MySQL em um tmpfs e obtive um aumento de desempenho de 10-20% comparado ao disco.

    
por 21.06.2009 / 02:12