Mesmo que estejamos usando "innodb_file_per_table = 1" desde o primeiro dia. O arquivo ibdata ainda continua a crescer. O tamanho total do nosso banco de dados é de cerca de 800 GB e o arquivo ibdata está atualmente em torno de 50 GB. Todas as nossas tabelas são innodb.
Como pode crescer quando usamos innodb_file_per_table?
Poderia ser blobs, mediumtext ou esses tipos de colunas?
Existe uma maneira de reduzir isso, considerando que já usamos innodb_file_per_table?
Uma causa comum do crescimento do espaço de tabela é o espaço de desfazer. Simplificado: as transações que ainda não foram confirmadas acompanham as alterações que podem ser revertidas, se necessário. Veja o artigo que Phil linka com mais explicações sobre o espaço de tabela em crescimento.
É claro que ainda não há como reduzir o tablespace além de uma restauração lógica [consulte a redução do tablespace na documentação] .
Se o espaço de desfazer for o motivo pelo qual o seu está crescendo, a partir da versão 5.6, você poderá armazenar os logs de desfazer em arquivos separados . Algumas coisas a ter em mente:
Minhas recomendações:
Informações adicionais sobre como mover o espaço de desfazer:
Posso mover o log de desfazer para fora do ibdata1 no MySQL 5.6 em um servidor existente?
Olhe para as consultas que você realizou. Provavelmente um deles era realmente enorme - como um maciço
UPDATE
para uma mesa de 50 GB. Adivinha? Ele tinha que salvar os valores antigos daquela tabela para o caso de você fazer umROLLBACK
ou o sistema travar.Considere escrever consultas "menores".