# Engines MySQL

![Logo MySQL](https://cdn.hashnode.com/res/hashnode/image/upload/v1728586189140/87ff18c0-0d71-46f3-910c-aae376eacb69.gif)

Esse texto visa apresentar o funcionamento das engines do banco de dados MySQL.

A assunto busca mostrar as principais diferenças entre as engines do MySQL, de forma simples e não técnica.

Esse texto é voltado para quem está iniciando no mundo do SQL e quer entender um pouco mais sobre esse assunto.

### Quais as diferenças entre os motores de banco de dados no MySQL?

#### O que é um motor de banco de dados?

Um motor de banco de dados é um software que permite que os usuários acessem e manipulem dados armazenados em um banco de dados. O motor de banco de dados é responsável por gerenciar o acesso aos dados, bem como a recuperação e armazenamento de dados.

### Quais são os motores de banco de dados no MySQL?

Os principais motores de banco de dados no MySQL são:

*   MyISAM
*   InnoDB
*   MEMORY
*   ARCHIVE
*   CSV
*   MERGE
*   NDB
*   NDBCLUSTER

Hoje vamos falar sobre os motores **MyISAM**, **InnoDB** e **MEMORY** e suas diferenças.

### InnoDB

### O que é o InnoDB?

O InnoDB é um motor de banco de dados de transação, que suporta transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha. Ele armazena dados em tabelas em arquivos de dados e índices em arquivos de índice.

### Quais são as principais características do InnoDB?

*   Todas as tabelas InnoDB são armazenadas em arquivos de dados e índices em arquivos de índice. Os arquivos de dados tem a extensão .ibd e os arquivos de índice, que contêm o formato da tabela, têm a extensão .frm.
*   O InnoDB suporta transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha.
*   O InnoDB suporta tabelas com chaves primárias compostas.
*   Ao fazer uma consulta, o InnoDB verifica se a consulta pode ser resolvida usando um índice. Se não puder, ele faz uma varredura completa da tabela.
*   Quando tiver uma mudança de dados na tabela, o InnoDB bloqueia somente as linhas afetadas. Dessa forma, o InnoDB pode lidar com grandes quantidades de dados.
*   O InnoDB hoje é o motor padrão do MySQL. Depois que o InnoDB foi introduzido, o MyISAM foi considerado obsoleto e não é mais recomendado para novos projetos.

### MyISAM

### O que é o MyISAM?

O MyISAM é um motor de banco de dados de tabela, que armazena dados em tabelas em arquivos de dados e índices em arquivos de índice. O MyISAM não suporta transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha.

### Quais são as principais características do MyISAM?

*   Todas as tabelas MyISAM são armazenadas em arquivos de dados e índices em arquivos de índice. Os arquivos de dados têm a extensão .MYD e os arquivos de índice, que contêm o formato da tabela, têm a extensão .MYI.
*   O MyISAM não suporta transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha.
*   O MyISAM não suporta tabelas com chaves primárias compostas.
*   Quando tiver uma mudança de dados na tabela, o MyISAM bloqueia a tabela inteira. Dessa forma, o MyISAM não pode lidar com grandes quantidades de dados.

### MEMORY

### O que é o MEMORY?

O MEMORY é um motor de banco de dados de tabela, que armazena dados em tabelas em memória. O MEMORY não suporta transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha.

### Quais são as principais características do MEMORY?

*   Todas as tabelas MEMORY são armazenadas em memória.
*   O MEMORY não suporta transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha.
*   Caso surja uma falha no servidor, os dados serão perdidos.
*   O MEMORY não suporta tabelas com chaves primárias compostas.
*   Quando tiver uma mudança de dados na tabela, o MEMORY bloqueia a tabela inteira. Dessa forma, o MEMORY não pode lidar com grandes quantidades de dados.

### MyISAM vs MEMORY

Realmente não há muita diferença entre os motores MyISAM e MEMORY. Ambos armazenam dados em arquivos de dados e índices em arquivos de índice. Ambos não suportam transações de banco de dados com recursos de recuperação de falhas e bloqueio de linha. Ambos não suportam tabelas com chaves primárias compostas. Ambos bloqueiam a tabela inteira quando tiver uma mudança de dados na tabela. Ambos não podem lidar com grandes quantidades de dados.

A diferença entre os motores MyISAM e MEMORY é que o MEMORY armazena dados em memória RAM e o MyISAM armazena dados em arquivos de dados.

Dessa forma, o MEMORY é incrivelmente rápido. Ele é usado para armazenar dados temporários, como dados de sessão, dados de cache e dados de fila.

Espero que tenha ajudado. Qualquer dúvida, correção ou sugestão, por favor, deixe nos comentários.
