O que são motores de banco de dados MySQL?

Olhei em volta e descobri que alguns dos motores MySQL são innodb e MyISAM. Talvez haja mais alguns. A minha pergunta é: o que são estes motores de base de dados?

Quais são as diferenças entre os diferentes motores MySQL? E mais importante, como é que eu decido qual usar?

Author: Somnath Muluk, 2010-11-20

6 answers

mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

Eu uso sempre o InnoDB se tiver de usar o MySQL. Suporta transacções e chaves estrangeiras enquanto o MyISAM não suporta.

 61
Author: Vincent Savard, 2010-11-20 16:51:23

Os motores de armazenamento MySQL manipulam as tabelas "transaction-safe" e as tabelas "nontransaction-safe" também.

Motores De Armazenamento MySQL

  1. DCI

    • O motor de armazenamento predefinido MySQL (para v5.7) e o motor de armazenamento mais geral.
    • motor de armazenamento seguro para transacções (conforme com o ácido)
    • oferece capacidades de commit, rollback e recuperação de crash
    • armazena os índices agrupados de dados para reduzir I / O
    • Suporta restrições de Chave estrangeiras
  2. MyISAM

    • dá bloqueio ao nível da mesa
    • mais útil em apenas leitura ou leitura - principalmente em cargas de trabalho na web e em configuração de armazenamento de dados.
    • bom para mesas com pequena pegada
  3. Memória

      Também conhecido como HEAP engine.
  4. todos os dados armazenados na RAM
  5. Bom para ambientes que requerem uma rápida procura de dados não críticos.
  6. CSV

    • as tabelas são ficheiros de texto com valores separados por vírgulas. (I. E. CSV)
    • é bom importar em formato CSV,
    • fácil de trocar dados com scripts e aplicações com o formato CSV.
    • Os quadros não são indexados
    • útil nas fases de importação ou exportação
  7. Arquivo

    • as tabelas são compactas e não indexadas
    • destinado a ser armazenado e obtenção de dados históricos, arquivados ou de auditoria
  8. Blackhole

    • Aceita dados mas não armazena dados
    • as consultas devolvem sempre um conjunto vazio
    • útil em configurações de replicação (é aqui que as declarações DML são enviadas para servidores escravos, mas o servidor mestre não guarda dados.)
  9. NDB

    • também conhecido por NDBLUSTER
    • base de dados agrupada motor
    • útil para aplicações que requerem o alto tempo de funcionamento e alta disponibilidade.
  10. Juntar

    • útil para agrupar logicamente uma série de tabelas Miisam idênticas
    • Bom para ambientes VLDB como armazenamento de dados.
  11. Federados

    • permite a ligação de servidores MySQL separados para criar uma base de dados lógica a partir de Servidores físicos
    • Ainda bem. ambientes distribuídos ou data mart.
  12. Exemplo

    • "stub" que não faz nada
    • só as tabelas podem ser criadas
    • nenhum dado pode ser armazenado ou recuperado

Não se restringe a usar o mesmo motor de armazenamento para um servidor inteiro ou esquema. Você pode especificar o motor de armazenamento para qualquer tabela. Por exemplo, uma aplicação pode usar principalmente tabelas InnoDB, com uma tabela CSV para exportar dados para uma planilha e algumas tabelas de memória para espaços de trabalho temporário.

Referências:

  • Compreender Os Motores De Armazenamento MySQL
  • Doc Oficial

Após comparação é do Doc oficial de Mysql. enter image description here

 35
Author: Somnath Muluk, 2018-09-26 05:25:33
O MyISAM e o InnoDB são os motores mais usados.

O MyISAM é um pouco mais rápido que o InnoDB, e implementa o índice FULLTEXT que é bastante útil para integrar capacidades de pesquisa. MyISAM não é transaccionado e não implementa restrições chave estrangeiras, o que é um grande inconveniente.

Mas você pode usar o melhor de ambos e criar tabelas com diferentes motores de armazenamento. Alguns softwares (WordPress, eu acho) usam Inno para a maioria dos dados, como as relações entre páginas, versões, etc. Os registros para os posts contêm um ID que liga a um registro em uma tabela de conteúdo separada que usa MyISAM. Dessa forma, o conteúdo é armazenado na tabela que tem as melhores capacidades de pesquisa, enquanto a maioria dos outros dados são armazenados em tabelas que impõem a integridade dos dados.

Se fosse a ti, escolhia o Inno, porque é o mais fiável. Utilize o MyISAM apenas para fins específicos se necessário.

Você pode configurar a sua base de dados para usar o InnoDB por omissão ao criar um novo tabela.

 34
Author: GolezTrol, 2010-11-20 17:00:40

Diferentes motores de armazenamento disponíveis, existem poucas razões para não utilizar os tipos de motores MyISAM ou InnoDB. MyISAM vai fazer na maioria das situações, mas se você tem um elevado número de atualizações ou inserções em comparação com suas pesquisas e seleciona, então você terá um melhor desempenho a partir do Motor InnoDB. Para obter o melhor desempenho do InnoDB você precisa ajustar os parâmetros para o seu servidor, caso contrário não há razão para não usá-lo.

O motor de fusão é extremamente forma eficaz de pesquisar dados de tabelas múltiplas, identicamente definidas. O motor de memória é a melhor maneira de executar um grande número de consultas complexas em dados que seriam ineficientes para pesquisar em um motor baseado em disco. O motor CSV é uma ótima maneira de exportar dados que poderiam ser usados em outras aplicações. A BDB é excelente para dados que têm uma chave única que é acessada com frequência.

This Image provides an overview of some storage engines provided with MySQL:

 10
Author: rajangupta, 2016-04-01 07:29:14

Um motor de armazenamento é um módulo de software que um sistema de gerenciamento de banco de dados usa para criar, ler, atualizar dados de uma base de dados. Existem dois tipos de motores de armazenamento em MySQL: transacional e não transacional.

Para o MySQL 5.5 e mais tarde, o motor de armazenamento por omissão é o InnoDB. O motor de armazenamento padrão para MySQL antes da versão 5.5 foi MyISAM. Escolher o motor de armazenamento certo é uma decisão estratégica importante, que terá impacto no desenvolvimento futuro. Neste tutorial, vamos usar os motores de armazenamento MyISAM, InnoDB, memória e CSV. Se você é novo no MySQL e está estudando o sistema de gerenciamento de banco de dados MySQL, então isso não é uma grande preocupação. Se você está planejando uma base de dados de produção, então as coisas se tornam mais complicadas.

Pode ler mais aqui: http://zetcode.com/databases/mysqltutorial/storageengines/

 3
Author: Victoria, 2018-09-25 08:33:59
Talvez consiga mais informações aqui.: https://en.wikipedia.org/wiki/Database_engine

Um motor de banco de dados (ou motor de armazenamento) é o componente de software subjacente que um sistema de gerenciamento de banco de dados (DBMS) usa para criar, ler, atualizar e excluir (CRUD) dados de uma base de dados. A maioria dos sistemas de gerenciamento de banco de dados incluem sua própria interface de programação de aplicativos (API) que permite ao usuário interagir com seu motor subjacente sem passar pelo Usuário interface do DBMS.

 1
Author: Mogli, 2018-09-25 08:32:31