Tamanho do Tablespace InnoDB

Tamanho do Tablespace InnoDB

Diferentemente do MyISAM onde dados para tabelas individuais são armazenados em seus respectivos arquivos, InooDB armazena os dados em um “tablespace”. Por padrão, existe apenas um único tablespace e dados de todos os bancos de dados são armazenados em um arquivo. Este arquivo tem dicionário de dados, tableas, e índices dentro dele. Existe um parametro global innodb_data_file_path que define este arquivo do tablespace. Sua sintaxe é algo como ibdata1:256M:autoextend, isto significa que inicialmente um arquivo de 256 MB será criado e quando o tamanho dos dados exceder este tamanho, o arquivo será auto-extendido. A variável innodb_autoextend_increment define em MB’s o tamanho que cada incremento deverá ter.

 

 

Vamos ver como podemos utilizar estes parâmetros:   

 

  1. Inserts: Suponha que você tem muitos inserts e o InnoDB está extendento o arquivo muito frequentemente. Faz sentido aumentar o valor de innodb_autoextend_increment. Digamos que aumentemos para 16MB, então obviamente o número de tentativas de auto-extender o tablespace baixará pela metade, portanto melhorando a performance. Mas tenha cuidado antes de achar muito fácio e aumentar este valor muito. Há uma grande armadilha, veremos em breve.
  2. Deletes: Aqui está a armadilha. Você tem um tablespace de 10 GB tablespace (depois de muitos autoextends), apaga cerca de 5 GB de dados(dados + indices) e acha que agora o tablespace é de 5 GB. Errado, InnoDB não tem noção de como devolver o espaço reservado ao file system. Porém, irá utilizar o espaço liberado para novos inserts. Então, este método não pode ser diretamente utilizado para se liberar espaço em disco. Se você tem dados dos quais pode se livrar faça-o antes que o próximo autoextend seja executado. Uma coisa pode ser feita para reaver o espaço utilizado é usar  OPTIMIZE TABLE frequentemente o suficiente em tabelas que tem um alto volume de inserts e deletes. Mas, novamente, saiba que MySQL bloqueia a tabela durante o tempo que o OPTIMIZE TABLE estiver rodando. Outra pegadinha, certo? OPTIMIZE TABLE faz muitas outras coisas pelas quais faz sentido ser executado, porém não tão frequentemente. 
  3. Separate Files per Table: InnoDB disponibiliza esta opção onde dados (dados + índices) para cada tablea possam ser armazenados em arquivos separados através da variável global innodb_file_per_table. Mesmo assim um tablespace compartilhado será criado para armazenar coisas como o dicionário de dados. Mas ainda assim desta maneira é possível ter pequenos blocos (arquivos separados) que melhorará o escopo de gerenciamento e pode aumentar a performance em geral.
  4. Fixed Tablespace size: Uma maneira de transpassar os problemas de espaço do arquivo de tablespace é fixar o tamanho do tablespace (remover autoextend) para um valor estipulado. Então, quando alcançar o limite, você saberá que é hora de fazer a limpeza. Isto não é viável para todas as aplicações, pois estipular um valor limite nem sempre é possível. E também aumenta a complexidade da aplicação, que precisa tratar novas condições de erro e não perder dados.

 

Então, qual a conclusão? Você precisa descobrir o que são seus dados, quão críticos eles são, o que você quer fazer com eles e o que você quer que seus dados façam. Então siga alguns dos passos abaixo.  

  1. Mude para MyISAM: Para todas as tabelas (ou até mesmo bases de dados), para os quais você acredita que não há necessidade de ter controle de transações, mova-os para MyISAM. Para problemas que não podemos resolver completamente, destruímos o problema completamente.
  2. Tablespace Separado: É muito mais fácil cuidar de 10 pequemos problemas do que um único problemão.
  3. Apague dados/OPTIMIZE TABLE: Identifique quando você pode se livrar dos dados o mais breve possível. Você não precisa necessariamente apagar os dados diretamente. Transfirá-os para uma tabela MyISAM, compacte o arquivo e arquive-o em algum outro lugar e apague-os da tabela principal. Existem também muitos outros modos de fazer isso. Execute OPTIMIZE TABLE com frequência suficiente para que não atrapalhe muito as leituras e escritas e que não leve muito tempo para ser executado.

 

Espero que este post ajude-o.

 

 

 

 

 

 

 

 

 

 

 

Você pode fazer o Jornal GGN ser cada vez melhor.

Apoie e faça parte desta caminhada para que ele se torne um veículo cada vez mais respeitado e forte.

Apoie agora

Deixe uma mensagem

Por favor digite seu comentário
Por favor digite seu nome