Capítulo 16 Motores de armazenamento alternativos

Motores de armazenamento são componentes MySQL que lidam com as operações SQL para diferentes tipos de tabelas. InnoDB é o motor de armazenamento padrão e de uso mais geral, e a Oracle recomenda seu uso para tabelas, exceto para casos de uso especializado. (A instrução CREATE TABLE no MySQL 8.0 cria InnoDB tabelas por padrão.)

MySQL Server usa uma arquitetura de mecanismo de armazenamento plugável que permite que os mecanismos de armazenamento sejam carregados e descarregados de um servidor MySQL em execução.

Para determinar quais mecanismos de armazenamento o seu servidor suporta, use a instrução SHOW ENGINES. O valor na coluna Support indica se um mecanismo pode ser usado. Um valor de YES, NO, ou DEFAULT indica que um motor está disponível, não disponível, ou disponível e actualmente definido como o motor de armazenamento predefinido.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NO XA: NO Savepoints: NO*************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NO XA: NO Savepoints: NO*************************** 5. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engineTransactions: NO XA: NO Savepoints: NO...

Este capítulo cobre os casos de utilização para motores de armazenamento MySQL para fins especiais. Ele não cobre o motor de armazenamento padrão InnoDB ou o motor de armazenamento NDB que são cobertos no Capítulo 15, O motor de armazenamento InnoDB e Capítulo 23, MySQL NDB Cluster 8.0. Para usuários avançados, ele também contém uma descrição da arquitetura do mecanismo de armazenamento plugável (veja a Seção 16.11, “Visão geral da arquitetura do mecanismo de armazenamento MySQL”).

Para informações sobre os recursos oferecidos nos binários comerciais do MySQL Server, veja MySQL Editions, no website MySQL. Os mecanismos de armazenamento disponíveis podem depender de qual edição do MySQL você está usando.

Para respostas a perguntas comuns sobre motores de armazenamento MySQL, veja Seção A.2, “FAQ do MySQL 8.0″: Motores de armazenamento”.

Motores de armazenamento suportados pelo MySQL 8.0

  • InnoDB: O motor de armazenamento padrão no MySQL 8.0. InnoDB é um mecanismo de armazenamento seguro para transações (compatível com ACID) para MySQL que possui recursos de commit, rollback e crash-recovery para proteger os dados do usuário. InnoDB bloqueio a nível de linha (sem escalonamento para bloqueios de granularidade mais grosseiros) e leituras consistentes de não bloqueio estilo Oracle aumentam a simultaneidade e o desempenho de multi-usuário. InnoDB armazena dados de usuários em índices agrupados para reduzir E/S para consultas comuns baseadas em chaves primárias. Para manter a integridade dos dados, InnoDB também suporta FOREIGN KEY restrições de integração referencial. Para obter mais informações sobre InnoDB, consulte o Capítulo 15, O Motor de Armazenamento InnoDB.

  • MyISAM: Estas tabelas têm uma pequena pegada. O travamento em nível de tabela limita o desempenho em cargas de trabalho de leitura/escrita, por isso é freqüentemente usado em cargas de trabalho somente leitura ou principalmente de leitura em configurações de Web e armazenamento de dados.

  • Memory: Armazena todos os dados na RAM, para acesso rápido em ambientes que requerem consultas rápidas de dados não críticos. Este motor era anteriormente conhecido como o motor HEAP. Seus casos de uso estão diminuindo; InnoDB com sua área de memória buffer pool fornece uma maneira geral e durável de manter a maioria ou todos os dados na memória, e NDBCLUSTER fornece buscas rápidas de valor chave para grandes conjuntos de dados distribuídos.

  • CSV: Suas tabelas são realmente arquivos de texto com valores separados por vírgula. As tabelas CSV permitem importar ou descarregar dados em formato CSV, para trocar dados com scripts e aplicações que lêem e escrevem nesse mesmo formato. Como as tabelas CSV não são indexadas, você normalmente mantém os dados em InnoDB tabelas durante a operação normal, e só usa tabelas CSV durante a etapa de importação ou exportação.

  • Archive: Estas tabelas compactas e não indexadas destinam-se ao armazenamento e recuperação de grandes quantidades de informação de auditoria histórica, arquivada ou de segurança raramente referenciada.

  • Blackhole: O motor de armazenamento Blackhole aceita mas não armazena dados, semelhante ao dispositivo Unix /dev/null. As consultas sempre retornam um conjunto vazio. Estas tabelas podem ser usadas em configurações de replicação onde declarações DML são enviadas para servidores replicados, mas o servidor fonte não mantém a sua própria cópia dos dados.

  • NDB (também conhecido como NDBCLUSTER): Este motor de base de dados em cluster é particularmente adequado para aplicações que requerem o mais alto grau de disponibilidade e tempo de funcionamento possível.

  • Merge: Permite a um MySQL DBA ou desenvolvedor agrupar logicamente uma série de tabelas idênticas MyISAM e referenciá-las como um único objeto. Bom para ambientes VLDB, tais como data warehousing.

  • Federated: Oferece a capacidade de ligar servidores MySQL separados para criar uma base de dados lógica a partir de muitos servidores físicos. Muito bom para ambientes distribuídos ou de data mart.

  • Example: Este motor serve como exemplo no código fonte MySQL que ilustra como começar a escrever novos motores de armazenamento. É principalmente de interesse para os desenvolvedores. O motor de armazenamento é um “stub” que não faz nada. Você pode criar tabelas com este motor, mas nenhum dado pode ser armazenado nelas ou recuperado delas.

Você não está restrito a usar o mesmo motor de armazenamento para um servidor ou esquema inteiro. Você pode especificar o motor de armazenamento para qualquer tabela. Por exemplo, uma aplicação pode utilizar principalmente InnoDB tabelas, com uma CSV tabela para exportar dados para uma folha de cálculo e algumas MEMORY tabelas para espaços de trabalho temporários.

Escolhendo um motor de armazenamento

Os vários motores de armazenamento fornecidos com o MySQL são desenhados com diferentes casos de utilização em mente. A tabela a seguir fornece uma visão geral de alguns mecanismos de armazenamento fornecidos com o MySQL, com notas explicativas seguindo a tabela.

Tabela 16.1 Motores de armazenamento Resumo das características

>Não

Função MyISAM Memória InnoDB Arquivo NDB
B-índices de árvore Sim Sim Sim Não Não Não
Backup/point-in-tempo de recuperação (nota 1) Sim Sim Sim Sim Sim Sim
Suporte de base de dados cluster Não Não Não Não Sim
Índices agrupados Não Não Sim Não Não
Dados comprimidos Sim (nota 2) Não Sim Sim Não
Caches de dados Não N/A Sim Não Sim
Dados encriptados Sim (nota 3) Sim (nota 3) Sim (nota 4) Sim (nota 3) Sim (nota 3)
Suporte de chave externa Não Não Sim Não Sim (nota 5)
Totall-índices de pesquisa de texto Sim Não Sim (nota 6) Não Não Não
Geospatial tipo de dados suporte Sim Não Sim Sim Sim Sim
Indice geoespacial suporte Sim Não Sim (nota 7) Não Não Não
Índices de hash Não Sim Não (nota 8) Não Sim
Caches de índice Sim N/A Sim Não Sim
Granularidade de bloqueio Tabela Tabela Linha Row Row
MVCC Não Não Sim Não Não
Suporte de réplica (nota 1) Sim Limitado (nota 9) Sim Sim Sim
Limites de armazenamento 256TB RAM 64TB Nenhum 384EB
T-índices de árvore Não Não Não Não Não Sim
Transações Não Não Sim Não Não Sim
Atualizar estatísticas para o dicionário de dados Sim Sim Sim Sim Sim Sim

Notas:

1. Implementado no servidor, e não no motor de armazenamento.

2. As tabelas MyISAM comprimidas são suportadas apenas quando se utiliza o formato de linha comprimida. Tabelas usando o formato de linha comprimida com MyISAM são apenas lidas.

3. Implementado no servidor através de funções de encriptação.

4. Implementado no servidor através de funções de encriptação; No MySQL 5.7 e posteriores, a encriptação de dados em repouso é suportada.

5. Suporte para chaves estrangeiras está disponível no MySQL Cluster NDB 7.3 e posteriores.

6. Suporte para índices FULLTEXT está disponível no MySQL 5.6 e posteriores.

7. Suporte para indexação geoespacial está disponível no MySQL 5.7 e posteriores.

8. InnoDB utiliza índices hash internamente para sua característica Adaptive Hash Index.

9. Veja a discussão mais tarde nesta seção.

Deixe uma resposta

O seu endereço de email não será publicado.