Pergunta

Temos um banco de dados com os dados relacionados ao tempo. Como você pode imaginar, ele cresce (e diminui a velocidade) com o tempo. Há 50% de leitura e 25% de inserções e 25% de ação de atualização nos dados presentes (neste mês), 100% lidos sobre os dados mais antigos.

  • O bom é que os dados mais antigos também se tornam menos importantes.
  • O ruim é que às vezes precisamos consultar um período inteiro do presente até o ano passado.

Agora eu quero ter uma arquitetura MySQL, que serve aos dados mais jovens mais rapidamente que os mais velhos.

Existe uma maneira de fazer isso no MySQL?


Post Scriptum: é claro, enquanto trabalhamos com Ruby on Rails e registro ativo na camada de aplicativos, poderíamos reescrever facilmente a classe base de registro ativo para acessar várias tabelas e mover os dados mais antigos para uma outra tabela. Mas como também lemos consultas de outros sistemas, como os relatórios, que devem poder acessar os dados antigos e novos e, às vezes, ambos ao mesmo tempo, gostaria de resolvê -los no MySQL.

Foi útil?

Solução

MySQL particionando foi praticamente feito apenas para você. Exige que você esteja no 5.1.

Outras dicas

Eu dividia a tabela em (pelo menos) 2 tabelas e armazenava dados atuais em um e os dados de arquivamento o outro. Em seguida, use uma visualização MySQL para criar uma tabela "virtual" que possa ser usada quando todos os dados forem necessários, caso contrário, acesse os dados necessários diretamente usando a tabela ATUALL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top