Meu arquivo ibdata é muito grande, pelo menos parece-me muito grande. Isso é excessivo ou ruim?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Meu arquivo ibdata é muito grande, pelo menos parece-me muito grande. Isso é excessivo ou ruim?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Respostas:
Se você executar show table status
uma tabela e o Data_free
campo corresponder à grande maioria ibdata1
do tamanho do seu arquivo, poderá ter muito espaço desperdiçado. Uma grande quantidade de inserção / exclusão tornará isso um problema. Se esse for o caso, as inserções e exclusões transitórias compõem a maior parte dos seus dados, você tem um bom argumento para o arquivo por tabela.
Isso não é um "sim" automático, no entanto. Há muita conversa no mundo sobre fragmentação interna dentro dos arquivos do InnoDB, mas colocá-los em um sistema de arquivos como arquivo por tabela apenas move sua fragmentação para o nível do sistema de arquivos em vez do nível do banco de dados.
Pense no seu arquivo InnoDB como um sistema de arquivos e não como um arquivo. Se você possui muitos arquivos, precisará de um grande sistema de arquivos.
Na maioria das vezes, os sistemas de arquivos se saem muito bem ao escalar para lidar com terabytes de dados e números incontáveis de arquivos. Às vezes, eles se deparam com problemas com pouca indexação (por exemplo, limites para o número de arquivos em um diretório antes de um impacto no desempenho), mas, na maioria das vezes, o sistema de arquivos moderno pode atingir uma faixa de terabytes.
O InnoDB funciona da mesma maneira. O tamanho do seu arquivo de dados pode ser enorme ... e como grandes sistemas de arquivos, que podem apresentar problemas com o backup dos seus dados. No entanto, assim como dividir seu sistema de arquivos em várias partições não ajuda nesse problema, nem tentar manipular o innodb. Embora você possa usar innodb_file_per_table , eu raramente o recomendo.
Assim como o seu sistema de arquivos, a melhor resposta é conhecer os limites internamente e trabalhar dentro dele. Entenda os índices e aplique-os adequadamente. Não tente tentar dividir o InnoDB, não é para isso.
Como estou lutando para transmitir o conceito de forma construtiva, aqui está uma rápida leitura das palavras, melhor do que eu: Terabytes não é big data, petabytes é .
Lembro-me de um slide de marketing do MySQL realmente muito antigo, em que o cliente estava executando um data warehouse com alguns terabytes. Há muitos anos. InnoDB ou MyISAM, ambos funcionariam. Isso é padrão no MySQL.
Não se preocupe com um banco de dados de 15 GB.
InnoDB free: 7364608 kB
Os arquivos ibdata não diminuem - se você eliminou recentemente algumas tabelas ou removeu muitas linhas - o innodb na sua configuração não liberará o espaço livre de volta ao sistema de arquivos. eu sugiro que você:
dessa maneira, você poderá recuperar o espaço sempre que soltar arquivos idb associados a tabelas / bancos de dados do innodb serão removidos imediatamente.