Como evitar o espaço em disco no ramdisk?

1

Estou pensando em colocar o tempdir do meu banco de dados MySQL em um ramdisk no Linux. A razão para isso é trabalhar em torno do máximo de 4 gb de memória tabelas temporárias no MySQL. Minha única preocupação é como evitar erros de falta de espaço em disco se a tabela temporária baseada em MyISAM no ramdisk se tornasse maior que o ramdisk? Poderia um de alguma forma criar um mecanismo de transbordamento onde o tamanho do disco RAM é o tamanho do disco RAM mais o espaço livre no disco rígido. Se o ramdisk ficaria cheio, o resto seria gravado no disco rígido.

    
por David 27.09.2011 / 10:29

3 respostas

8

Pense nisso logicamente e ignore o fato de ser um disco virtual suportado por RAM: Você está pedindo um dispositivo de disco que fica maior porque você tentou armazenar mais coisas nele.

Você está pedindo uma abençoada bolsa de mão <30> .
Você está solicitando um Dimensional Hole .
Você está pedindo uma TARDIS ("é maior por dentro").

Você está pedindo por algo que não existe. Pelo menos não tanto quanto eu já vi ...

Usar tmpfs / armazenamento suportado por RAM para tabelas temporárias é uma maneira muito elegante de contornar o limite de 4 GB. Esteja ciente de que a RAM que você bloqueia não estará disponível para o MySQL fazer coisas como SORT ing, JOIN ing, etc. então você vai precisar de GOBS de RAM para tornar isto prático - você precisa do O tmpfs deve ser grande o suficiente para armazenar tantas tabelas temporárias (de tamanho presumivelmente substancial) quantas forem necessárias a qualquer momento, e você ainda precisa ter memória RAM suficiente sobrando que você não vai acabar trocando quando você executar grandes consultas (caso contrário, seu desempenho vai cair nos tubos de qualquer maneira porque ALGUÉM vai ter que ser trocado para dentro e para fora!).

Uma solução mais prática pode ser elaborar inteligentemente (e eficiente) JOIN s que elimina a necessidade de tabelas temporárias (se possível) e salvá-las como visualizações. Sem saber mais sobre o seu ambiente, não posso dar uma orientação específica, mas você sempre pode perguntar no site do DBA com alguns detalhes básicos sobre o que você está fazendo e veja se eles têm sugestões ...

(Sinto muito ser o portador de más notícias, mas se valer alguma coisa eu me diverti digitando essa resposta.)

    
por 27.09.2011 / 19:20
0

Em teoria, eu acho que você poderia criar um sistema de arquivos JBOD usando volumes físicos do ramdisk e do disco rígido - mas não tenho certeza se isso preencheria automaticamente o disco RAM primeiro. Este documento pode mostrar um pouco mais sobre o assunto

    
por 27.09.2011 / 18:50
0

Sua melhor aposta é comprar um SSD de 64 GB e colocar seu tempdir nele e nada mais. Eles são baratos cerca de US $ 1 / GB (à venda) para ~ US $ 64 e US $ 2 a GB não está à venda, você pode ter um super rápido tempdir que você não precisa se preocupar em ser pequeno.

    
por 27.09.2011 / 20:03