Arquivo da categoria: Storage Engines

O MyISAM está morto?

Desde a versão 5.5 do MySQL o storage engine InnoDB vem configurado “de fábrica” como padrão.

O InnoDB é um storage engine transacional, 100% ACID, estável e robusto, e, inteiramente, grátis. Reconhecidamente, fez progressos notáveis desde o MySQL 4.x. Com destaques para as melhorias implementadas nas versões: 5.1, 5.5, 5.6, e, recentemente na 5.7.

O fato de o InnoDB vir de fábrica como padrão, nada nos impede de criarmos tabelas (ou alterarmos) utilizando a opção ENGINE, para que estas reflitam o storage engine que mais nos atende.

Continue lendo O MyISAM está morto?

MySQL – Criação de Tablespace

No começo, antes da versão 5.1, quando ainda não tínhamos o “innodb-file-per-table” todas as tabelas eram criadas, e, armazenadas dentro de uma única tablespace, chamada de  “shared tablespace”, em português “área compartilhada de tabelas”, ou ainda, em “brasileiro”: casa da mãe Joana. Os famosos arquivos IBDATAx. Uma baderna. Dados, índices, metadados, transações, catálogos… Enfim, tudo referente às tabelas innodb ficam em um mesmo arquivão no S/O.

Pró: Contiguidade. Alocava-se um grande espaço justaposto no disco evitando-se fragmentação física. Contras: Performance, manutenção, etc. No frigir dos ovos, era muito ruim.

Com o nascimento do 5.1 e seu novo parâmetro maroto “innodb-file-per-table”, que como diz a tradução ao pé da letra: dançou mané – agora é uma área (tablespace/arquivo) para cada tabela. Resolveu sim os problemas de manutenção. Em alguns casos, até de performance, em virtude da melhor alocação dos dados no Buffer Pool (buffer cache). Mas, também, chegou com muitos outros problemas: aumentou muito o número de arquivos no S/O, e, com isso a necessidade de “ponteiros”, com isso, tivemos que rever as configurações de memória.

Continue lendo MySQL – Criação de Tablespace

MySQL 5.7 – TableSpace Genéricas v2.0 – A nova Onda

O conceito de tablespace não tem nada de novo. Só não é mais velho que eu. Vários outros RDBMS (bancos de dados) o implementam faz algum tempo. No MySQL foi implementado pelos primórdios do innoDB.

Em linhas gerais o que é uma tablespace?
Tem algumas palavras em inglês que não fazem o menor sentido traduzidas, ou, em traduzi-las. Concorda comigo? Para mim, tablespace é uma dessas palavras. Vamos lá: “espaço de tabelas”. Tablespace é uma área, física e/ou lógica, na qual se aglomeram uma ou mais tabelas. É como se fosse uma área reservada para uma, ou, um grupo de tabelas. Seja com o objetivo de organização (tabelas com mesmo fim, aplicação, etc), volumetria, performance, segurança, etc.

O MySQL e sua épica jornada com tablespaces
No princípio de tudo, e até a chegada da versão 5.1, todas as tabelas com storage engine innoDB eram, compulsoriamente, criadas dentro de uma tablespace única, também chamada de compartilhada (shared tablespace). Fisicamente, consistia de um arquivo com síndrome de Buzz (pois, crescia ao infinito e além), de nome ibdata, que, ficava logo abaixo da raiz do DATADIR (diretório de dados, definido pela variável datadir, e, onde reside o schema do MySQL). Esta implementação me rendeu muitas horas de sono, pois, era uma verdadeira armadilha. Por ser um único arquivo contendo várias tabelas, apresentava contenções de S/O, era de difícil sustentação e manutenção.

Continue lendo MySQL 5.7 – TableSpace Genéricas v2.0 – A nova Onda