O MySql disponibiliza um recurso para determinar o tipo de armazenamento do dados, para cada tabela, dentro de um mesmo banco de dados, ou seja, é possível ter N tipos de tabela dentro de um mesmo banco de dados.
O tipo de armazenamento interfere nos recursos que ficam disponíveis para tabela, para saber quais tipos estão disponíveis na versão instalada execute:

 SHOW ENGINES;

Tipo de armazenamento
MyISAM – Esse tipo é o padrão, caso o tipo não seja especificado na criação da tabela. É possível alterar o padrão, abra o arquivo de configuração do mysql, e mude default-table-type=NOVO TIPO PADRÃO.
A tabela do tipo MyISAM é separada em 3 arquivos: .frm esse tipo de arquivo armazena a estrutura da tabela; .myd armazena os dados da tabela; E .myi armazena os índices da tabela, para esse arquivo existem uma convenção de nomes, os arquivos devem começar com o mesmo nome da tabela. Outro detalhe desse tipo de armazenamento é a capacidade de criar índices fulltext, com ele é possível buscar palavras em blocos de texto, com maior relevância.
A velocidade de leitura desse tipo é extremamente rápida.
Esse tipo não disponibiliza controle de transação e também não possui integridade referencial, ou seja, ao incluir uma chave estrangeira com alguns constraints, esta servirá apenas como documentação, mas as restrições não serão respeitadas. Nesse tipo também existe a opção RAID_TYPE(a partir da versão 4.1), permite dividir o armazenamento da tabela em vários arquivos, isso pode ser útil em alguns sistema operacionais que tem limite de tamanho por arquivo, como no Linux que tem limite de 2GB/4GB. Uma desvantagem nesse tipo é o lock por tabela que ele realiza em uma escrita na tabela, ou seja, a tabela é bloqueada até que escrita seja finalizada, criando uma fila para leitura.

HEAD – Esse tipo é armazenado em memória, isso torna a velocidade leitura extremamente rápido, mas em contra partida os dados são voláteis, ao desligar o servidor MySql os dados serão perdidos, é recomendado para casos de muita leitura e pouca escrita.

MERGE – Esse tipo disponibiliza a junção de N tabelas com a mesma estrutura, permitindo o acesso como se fosse uma tabela única.
Exemplo:
Crio 2 tabelas com a mesma estrutura


CREATE TABLE cliente1(
     nome VARCHAR(100)
);


CREATE TABLE cliente2(
     nome VARCHAR(100)
);

Insiro alguns dados


INSERT INTO cliente1 (nome) VALUES('Maria');
INSERT INTO cliente2 (nome) VALUES('José');

Crio a tabela do tipo MERGE, para unificar a estrutura das tabelas


CREATE TABLE cliente (
     nome VARCHAR(100)
) TYPE = MERGE UNION = (cliente1, cliente2);

Visualizo os dados da tabela unificada


SELECT * FROM cliente;

Utilizando esse tipo de armazenamento é possível contornar o problema de tamanho limite do arquivo. As tabelas devem ser do tipo MyISAM, para serem unificadas
BDB – Esse tipo de armazenamento permite o uso de transação, e fornece meios de recuperar de forma automática os dados, em caso de queda de servidor, uma vantagem é que o lock desse tipo é no nível de página, ou seja, ao escrever na tabela só a região (pagina onde o dado se encontra) se bloqueado, e não a tabela toda como no tipo MyISAM.

InnoDB – Esse tipo também permite uso de transação, permite o uso de integridade referencial, armazena os dados em tablespace. A desvantagem é que esse tipo se apresenta um pouco mais lento que o MyISAM.

O ideal é que você pense em cada tipo de tabela, sabendo dos recursos acima, isso implicará bastante na resposta do sistema que consome o MySql.

Sintax de criação da tabela


CREATE TABLE cliente (
     Nome VARCHAR(100)
) TYPE=MyISAM;

Mude o valor de Type para determinar o tipo

Espero que tenham gostado, até a próxima.

Publicidade