Resumo : neste tutorial, você aprenderá sobre o mecanismo de armazenamento MySQL MyISAM e seus recursos.
Introdução ao mecanismo de armazenamento MySQL MyISAM
MyISAM é um mecanismo de armazenamento baseado em um mecanismo de armazenamento ISAM (Indexed Sequential Access Method) obsoleto.
MyISAM é um mecanismo leve, não transacional e de alto desempenho. Também é fácil copiar entre sistemas e ocupa um espaço de dados muito pequeno.
MyISAM era o mecanismo de armazenamento padrão no MySQL até a versão 5.5, quando o MySQL o mudou para InnoDB. O MySQL também incorporou os principais recursos do MyISAM no InnoDB , tornando o MyISAM um tanto obsoleto.
Para criar uma tabela MyISAM, você usa a cláusula ENGINE da instrução CREATE TABLE para MyISAM:
CREATE TABLE table_name(
...
) ENGINE=MYISAM;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ao criar uma tabela MyISAM, o mecanismo de armazenamento gera dois arquivos com o mesmo nome da tabela, cada um com as seguintes extensões:
.MYD
– MyData é o arquivo de dados..MYI
– MyIndex é o arquivo de índice.
O mecanismo de armazenamento armazena a definição da tabela no dicionário de dados MySQL.
O mecanismo de armazenamento MyISAM não suporta transações, chaves estrangeiras e bloqueio de linha. Além disso, o limite de armazenamento de uma tabela MyISAM é 256 TB.
O mecanismo de armazenamento MyISAM oferece suporte a índices de pesquisa de texto completo , tipo de dados geoespaciais e indexação.
Convertendo MyISAM para InnoDB
Se quiser converter todas as suas tabelas de MyISAM para InnoDB, você pode seguir estas etapas:
Primeiro, liste todas as tabelas MyISAM de um banco de dados específico:
SELECT
table_name
FROM
information_schema.tables
WHERE
table_schema = 'database_name'
AND engine = 'MyISAM';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, converta cada tabela para InnoDB usando a ALTER TABLE
instrução:
ALTER TABLE table_name ENGINE = InnoDB;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se você precisar converter todas as tabelas MyISAM em um banco de dados para InnoDB, você pode usar o seguinte procedimento armazenado:
DELIMITER //
CREATE PROCEDURE ConvertMyISAMToInnoDB(IN dbName VARCHAR(100))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tableName VARCHAR(100);
DECLARE cur CURSOR FOR
SELECT table_name
FROM information_schema.tables
WHERE table_schema = dbName AND engine = 'MyISAM';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO tableName;
IF done THEN
LEAVE read_loop;
END IF;
SET @alterSql = CONCAT('ALTER TABLE `', dbName, '`.`', tableName, '` ENGINE=InnoDB;');
PREPARE stmt FROM @alterSql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O procedimento armazenado ConvertMyISAMToInnoDB
aceita um nome de banco de dados ( dbName
) como parâmetro e faz o seguinte
- Primeiro, use um cursor para percorrer a lista de tabelas no banco de dados especificado (
dbName
) onde o tipo de mecanismo é MyISAM - Segundo, atualize cada tabela para InnoDB usando SQL dinâmico.
Por exemplo, para converter todas as tabelas MyISAM no banco de dados HR em tabelas InnoDB, você chama o procedimento armazenado ConvertMyISAMToInnoDB
assim:
CALL ConvertMyISAMToInnoDB('HR');
Linguagem de código: JavaScript ( javascript )
Resumo
- Use o mecanismo de armazenamento MyISAM para cargas de trabalho com uso intenso de leitura e aplicativos que exigem recursos de pesquisa de texto completo.
- O mecanismo de armazenamento MyISAM não oferece suporte a alguns recursos importantes, como transações e chaves estrangeiras, que são essenciais para a integridade dos dados em muitos aplicativos.