Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mecanismo de armazenamento MySQL para tabela de log


Bem, de acordo com sua pergunta, o InnoDB deve fazer o trabalho porque:
  1. Sua escalabilidade é muito melhor que MyISAM
  2. É um bloqueio de linha, portanto, se você tiver mais gravações do que seleções, ele se encaixa melhor.
  3. Finalmente, como você disse que raramente serão acessados, não há necessidade do MyISAM, pois é melhor em consultas selecionadas.

Verifique isto para mais informações

EDITAR

Bem, no comentário você pergunta sobre outros motores. Aqui está uma lista completa de motores. Dentre eles, como você disse que o arquivo tem uma desvantagem, os demais não atendem ao seu pedido. Aqui está uma citação do site MySQL:
InnoDB has been designed for maximum performance when processing large data volumes. 
Its CPU efficiency is probably not matched by any other disk-based relational database
engine.

Então, basicamente:
  1. Se for usar MEMORY não faça como disse que não vai acessar muito os dados e sua tabela vai crescer muito. Você precisará de muita RAM para isso e, quando reiniciar, todos os dados serão perdidos.
  2. Se você for usar o MyISAM, não o faça, pois ele é projetado para tabelas em que as consultas de seleção são mais frequentes do que inserir e atualizar.
  3. Quanto ao arquivo, a escolha é sua. Aqui é uma comparação entre MyISAM e archive para uma tabela de log. No entanto, eu ficaria com o InnoDB.
  4. Nem vou mencionar Merge, Blackhole, Example e outros mecanismos. (Não tenho muito conhecimento sobre o mecanismo CSV, mas pelo que li, esse não é um mecanismo adequado para esse tipo de tabela.

Para ser honesto, eu costumava gastar muito tempo antes de fazer um movimento importante na codificação. Eu pesquisei por horas, talvez por dias sobre um problema para ver qual caminho é o mais adequado. Vou te dizer uma coisa, pesquisar é bom, mas depois de um certo ponto, se isso te impede de trabalhar, você deve parar, tomar um café e fazer sua escolha imediatamente. Portanto, apenas tente o mais adequado para você e, à medida que você experimentar, encontrará uma maneira ainda melhor, tentando a si mesmo. Quer dizer, eu não acredito que o Facebook foi projetado para tal volume, mas à medida que cresceu, eles continuaram a mudar a estrutura de acordo. Isso é o que eu acredito, porém, pode não ser a realidade :) De qualquer forma, espero que a informação te ajude.

EDITAR 2013

Abaixo, você encontrará breves descrições para mecanismos de armazenamento MySQL integrados.

MeuISAM

Essas tabelas incluem otimizações adicionais, como cache avançado e mecanismos de indexação, que fornecem acesso rápido aos dados. Usando o bloqueio em nível de tabela, o mecanismo de armazenamento MyISAM fornece operações simultâneas. Quando o desempenho de leitura é uma preocupação, geralmente o MyISAM é a escolha.

Memória

Também chamadas de tabelas de heap, as tabelas de memória são ideais para recuperação rápida de dados usados ​​com frequência que raramente são alterados (como códigos de país, códigos postais ou outras tabelas de pesquisa). Como o nome sugere, os dados são armazenados na memória e, portanto, o acesso é muito mais rápido do que os dados armazenados em discos. Uma restrição significativa para o uso de memória é que os dados são válidos durante a sessão do MySQL. Quando ele trava ou desliga, os dados são perdidos.

InnoDB

Um caso em que você terá que usar esse mecanismo de armazenamento é quando precisar usar chaves ou transações estrangeiras. O InnoDB é mais concorrente do que o MyISAM, pois fornece bloqueio em nível de linha. O mecanismo de armazenamento é altamente confiável. Outro caso em que você desejará usar esse armazenamento é quando tiver mais gravações do que leituras. Quando você grava dados com frequência na tabela, tente usar esse armazenamento, pois é mais simultâneo que o MyISAM.

Arquivo

Ele é projetado para armazenar grandes quantidades de dados em um formato compactado. Um dos casos de uso desse mecanismo de armazenamento é armazenar dados de arquivamento ou históricos ou logs de segurança. A tabela não usa índices, portanto, para recuperação e armazenamento diário de dados, não é uma boa escolha. É bloqueio em nível de linha e os dados são descompactados dinamicamente quando solicitados. Além disso, não é possível alterar a tabela.

Mesclar

Mesclar é usado para 'mesclar' tabelas particionadas que residem na mesma máquina. Quando você divide uma tabela grande em várias tabelas menores e as acessa simultaneamente usando uma tabela de mesclagem, o maior benefício é sua velocidade. As pesquisas e classificações serão executadas mais rapidamente, pois há menos dados nas tabelas.