ltima modificação 10 de julho de 2020

Neste capítulo, vamos falar sobre motores de armazenamento MySQL.

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 um banco de dados. Existem dois tipos de mecanismos de armazenamento no MySQL: transacional e não transacional.

Para MySQL 5.5 e posteriores, o mecanismo de armazenamento padrão é InnoDB.O mecanismo de armazenamento padrão para MySQL antes da versão5.5 era MyISAM. Escolher o mecanismo de armazenamento correto é uma decisão estratégica importante, que terá impacto no desenvolvimento futuro. Neste tutorial, iremos utilizar os motores de armazenamento MyISAM, InnoDB, Memory eCSV. Se você é novo no MySQL e está a estudar o sistema de gestão de bases de dados MySQL, então isto 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.

Lista de motores de armazenamento

MySQL suportados por motores de armazenamento:

  • InnoDB
  • MyISAM
  • Memória
  • CSV
  • Fusão
  • Arquivo
  • Federado
  • Boca-preta
  • Exemplo

InnoDB é o motor de armazenamento mais usado com suporte a transações. É um motor de armazenamento compatível com ACID. Suporta bloqueio a nível de linha, recuperação de colisões e controle de múltiplas versões. É o único motor que fornece restrição de integridade de referencial de chave estrangeira. A Oracle recomenda o uso do InnoDB para tabelas, exceto para casos de uso especializado.

MyISAM é o motor de armazenamento original. É um motor de armazenamento rápido e não suporta transações. MyISAM fornece bloqueio de nível de tabela. É utilizado principalmente na Web e armazenamento de dados.

MyISAM é o motor de armazenamento de memórias que cria tabelas na memória. É o motor mais rápido. Fornece o bloqueio a nível de tabela. O motor de armazenamento de memória é ideal para criar tabelas temporárias ou pesquisas rápidas. Os dados são perdidos quando a base de dados é reiniciada.

CSV armazena os dados em ficheiros CSV. Ele fornece grande flexibilidade porque os dados neste formato são facilmente integrados em outras aplicações.

Merge opera em tabelas MyISAM subjacentes. A fusão de tabelas ajuda a gerenciar grandes volumes de dados mais facilmente. Ele agrupa logicamente uma série de tabelas MyISAM idênticas, e as referencia como um objeto.

Motor de armazenamento de dados é optimizado para inserção a alta velocidade. Itcomprime os dados à medida que são inseridos. Não suporta transações. É ideal para armazenar e recuperar grandes quantidades de dados históricos, arquivados e raramente referenciados.

O motor de armazenamento Blackhole aceita mas não armazena dados. As recuperações devolvem sempre um conjunto vazio. A funcionalidade pode ser usada no projeto de banco de dados distribuído onde os dados são automaticamente replicados, mas não armazenados localmente. Este mecanismo de armazenamento pode ser usado para realizar testes de performance ou outros testes.

O mecanismo de armazenamento federado oferece a capacidade de separar servidores MySQL para criar uma base de dados lógica de muitos servidores físicos. Nenhum dado é armazenado nas tabelas locais. É bom para ambientes distribuídos.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 2. row *************************** Engine: CSV Support: YES Comment: CSV storage engineTransactions: NO XA: NO Savepoints: NO...

O comando SHOW ENGINES mostra todos os motores disponíveis que o servidor suporta.

Escolhendo o motor certo

Nenhum motor de armazenamento é ideal para todas as circunstâncias. Alguns têm melhor desempenho em condições de incerteza e pior desempenho em outras situações. Existem tradeoffsthan que devem ser considerados. Uma solução mais segura requer mais recursos; pode ser mais lenta, levar mais tempo de CPU e espaço em disco. O MySQL é muito flexível no fato de que ele fornece vários mecanismos de armazenamento diferentes. Alguns deles, como o motor Archive, são criados para serem utilizados em situações específicas.

Em alguns casos a resposta é clara. Sempre que estamos lidando com alguns sistemas de pagamento, somos obrigados a utilizar a solução mais segura. Não nos podemos dar ao luxo de perder dados tão sensíveis. A InnoDB é o caminho a seguir. Se queremos uma pesquisa de textos completos, então podemos escolher MyISAM ou InnoDB. Somente a InnoDB suporta restrição de integridade referencial de chave estrangeira e se planejamos usar essa restrição, então a escolha é clara.

Especificar e alterar os motores de armazenamento

O motor de armazenamento é especificado no momento da criação da tabela.

mysql> CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), -> Cost INTEGER) ENGINE='MyISAM';

A palavra-chave ENGINE especifica o motor de armazenamento utilizado para esta tabela em particular.

Se não especificarmos explicitamente o motor de armazenamento, então o motor de armazenamento por defeito é utilizado. Antes do MySQL 5.5, o motor de armazenamento padrão era o MyISAM. Para o MySQL 5.5 e posteriores, o motor de armazenamento predefinido é o InnoDB.

É possível migrar para um motor de armazenamento diferente. Note que a migração da tabela dearge pode demorar muito tempo. Também podemos ter alguns problemas ao migrar as tabelas. Alguns recursos podem não ser suportados em ambas as tabelas.

mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars';+--------+| ENGINE |+--------+| InnoDB |+--------+1 row in set (0,05 sec)

Esta instrução SQL descobre o mecanismo de armazenamento utilizado para uma tabela em Cars em mydb base de dados. Também podemos usar SELECT CREATE TABLE Cars instrução SQL. A information_schema é uma tabela que armazena informações técnicas sobre as nossas tabelas.

mysql> ALTER TABLE Cars ENGINE='MyISAM';

Esta instrução SQL altera o motor de armazenamento da tabela Cars para MyISAM.

mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars';+--------+| ENGINE |+--------+| MyISAM |+--------+1 row in set (0,00 sec)

Agora o motor de armazenamento da tabela é o MyISAM.

Nesta parte do tutorial do MySQL, nós cobrimos os mecanismos de armazenamento.

Articles

Deixe uma resposta

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