Teste de comparação do mecanismo de armazenamento MySQL (tipo de tabela) de diferentes mecanismos de armazenamento

1. Introdução ao mecanismo de armazenamento

1. O que é um mecanismo de armazenamento (tipo de tabela)

Antes de falar sobre o mecanismo de armazenamento, vamos fazer uma analogia: na vida real, armazenamos arquivos de dados de diferentes tipos, e cada tipo de arquivo corresponde a seu próprio mecanismo de processamento diferente.

  • Por exemplo, um arquivo de vídeo pode ser convertido em mp4, avi, wmv e uma imagem pode ser png, jpg

  • Também temos diferentes tipos de sistemas de arquivos em um disco de computador, Windows em comum NTFS, FAT32 , Linux frequentemente visto em ext3, ext4, xfs , etc.

  • As tabelas no banco de dados também devem ter tipos diferentes.Os tipos de tabelas são diferentes, o que corresponderá a diferentes mecanismos de acesso do mysql.O tipo de tabela também é chamado de mecanismo de armazenamento.

2. Por que existem vários mecanismos de armazenamento

Como na analogia acima, embora o tipo de arquivo de vídeo seja diferente, o conteúdo apresentado é o mesmo.

  • O mesmo é verdadeiro para os dados da tabela. Independentemente do mecanismo de armazenamento usado para os dados de uma tabela, os dados que os usuários podem ver são os mesmos. Pode haver diferenças entre os diferentes mecanismos de armazenamento, funções do mecanismo, espaço ocupado, desempenho de leitura, etc.

  • Para ser franco, o mecanismo de armazenamento é sobre como armazenar dados, extrair dados, atualizar dados e outros métodos técnicos. A implementação subjacente é diferente, então mostrará que diferentes mecanismos de armazenamento têm seus próprios recursos e funções exclusivos, correspondendo a diferentes Mecanismo de acesso

  • Desde então, os usuários escolhem diferentes mecanismos de armazenamento de acordo com seus diferentes cenários de negócios ao usá-los. Os mecanismos de armazenamento mais comumente usados ​​para MySQL são: MyISAM e InnoDB (detalhados abaixo)

  • ps : Há apenas um mecanismo de armazenamento em bancos de dados como Oracle e SQL Server, e todos os mecanismos de gerenciamento de armazenamento de dados são os mesmos

3. Fluxo de trabalho do MySQL

imagem-20210130090914956

Dois. Quatro motores de armazenamento principais do Mysql

1.InnoDB

  • O mecanismo de armazenamento padrão do Mysql 5.5 e posterior
  • Vantagens : Oferece suporte a transações, bloqueio em nível de linha e restrições de chave estrangeira têm maior segurança de dados
  • Características : Design de bloqueio de linha, suporte para chaves estrangeiras e suporte a leituras sem bloqueio semelhantes ao Oracle , ou seja, a operação de leitura padrão não gerará bloqueios
  • Desvantagens : Comparado com MyISAM, a velocidade é menor, mas a segurança é maior
  • Estrutura de armazenamento : Cada InnoDB (mecanismo de índice, com seu próprio índice) é armazenado em dois arquivos no disco, onde o nome do arquivo e o nome da tabela são os mesmos
t01.frm  # 存放的是表结构
t01.idb  # 存放的是 索引 + 数据

2.MyISAM

  • O mecanismo de armazenamento padrão antes do Mysql 5.5
  • Vantagens : A velocidade de acesso é mais rápida que Innodb
  • Desvantagens : não suporta transações, não suporta chaves estrangeiras, não requer integridade de transação, segurança de dados não é tão alta quanto Innodb
  • Estrutura de armazenamento : Cada MyISAM é armazenado como 3 arquivos no disco, onde o nome do arquivo e o nome da tabela são os mesmos
t01.frm  # 表结构
t01.MYD  # MyDaata 存放的是数据
t01.MYI  # MyIndex 存放的是索引

3. Memória

  • Vantagens : usando armazenamento de memória, a leitura de dados é muito rápida
  • Desvantagens : se o banco de dados for reiniciado ou travar, os dados da tabela desaparecerão
  • Estrutura de armazenamento : Cada memória é armazenada como um arquivo no disco, onde o nome do arquivo e o nome da tabela são os mesmos
t01.frm  # 表结构

4.Blackhole

  • Características : Os buracos negros, não importa o que você salve, irão desaparecer, semelhante ao dev / null no Linux
  • Aplicação : Pode ser aplicado à biblioteca mestre de distribuição na replicação mestre-escravo

3. A diferença entre MyISAM e InnoDB

1. Estrutura de armazenamento diferente

  • Cada MyISAM é armazenado como três arquivos no disco
  • Cada InnoDB é armazenado como 2 arquivos no disco

2. Espaço de armazenamento

  • MyISAM pode ser comprimido e o espaço de armazenamento é pequeno
  • InnoDB precisa de mais memória e armazenamento, ele estabelecerá seu pool de buffer dedicado na memória principal para armazenamento em buffer de alta velocidade de dados e índices

3. Apoio de coisas

  • MyISAM enfatiza o desempenho, cada consulta é atômica e sua velocidade de execução é mais rápida do que o tipo Innodb , mas não fornece suporte a transações
  • O InnoDB fornece funções avançadas de banco de dados, como suporte a transações, chaves externas e tabelas compatíveis com ACID seguras para transações com recursos de confirmação, reversão e recuperação de falhas

4. Chaves estrangeiras

  • InnoDB suporta chaves estrangeiras, MyISAM não

5. Adicionar, excluir, modificar e verificar as operações

  • Se você realizar um grande número de seleções , MyISAM é uma escolha melhor (porque não suporta bloqueios de nível de linha). Ao adicionar e deletar, você precisa bloquear a tabela inteira, o que é menos eficiente. InnoDB suporta bloqueios de nível de linha .Você só precisa travar ao deletar e inserir, basta fazer isso, a eficiência é maior;
  • Se seus dados realizam um grande número de inserções ou atualizações , por razões de desempenho, você deve usar tabelas InnoDB , e Excluir Innodb é melhor em termos de desempenho
  • No entanto delete from table, o InnoDB não recriará a tabela, mas a excluirá linha por linha . Se você deseja esvaziar uma tabela com uma grande quantidade de dados no InnoDB , é melhor usar truncate tableeste comando

6. Aplicação

  • MyISAM é adequado para aplicativos baseados em consulta e inserção
  • InnoDB é adequado para modificações frequentes e aplicações envolvendo alta segurança

Quatro. Outros mecanismos de armazenamento (entenda)

5. Motor de armazenamento NDB

Em 2003, a MySQL AB adquiriu o mecanismo de armazenamento NDB da Sony Ericsson. O mecanismo de armazenamento NDB é um mecanismo de armazenamento em cluster, semelhante ao cluster RAC da Oracle, mas ao contrário da estrutura de compartilhamento de tudo do Oracle RAC, sua estrutura é uma arquitetura de cluster sem compartilhamento, de modo que pode fornecer um nível mais alto de alta disponibilidade. O recurso do mecanismo de armazenamento NDB é que todos os dados são armazenados na memória (a partir da versão 5.1, os dados não indexados podem ser colocados no disco), de modo que as pesquisas de chave primária são extremamente rápidas e os nós de armazenamento de dados NDB podem ser adicionados online (nó de dados) para melhorar linearmente o desempenho do banco de dados. Pode-se ver que o mecanismo de armazenamento NDB é um sistema de cluster de banco de dados com alta disponibilidade, alto desempenho e alta escalabilidade, e também é orientado para aplicativos de banco de dados OLTP.

6. Motor de armazenamento Infobright

Mecanismo de armazenamento de terceiros. Sua característica é que o armazenamento é baseado em colunas em vez de linhas, portanto, é muito adequado para aplicativos de banco de dados OLAP. Seu site oficial é http://www.infobright.org/ , há muitos casos de armazenamento de dados bem-sucedidos para análise.

7. Motor de armazenamento NTSE

Um mecanismo de armazenamento desenvolvido pela NetEase para seu uso interno. A versão atual não oferece suporte a transações, mas fornece recursos como compactação e armazenamento em cache em nível de linha. O suporte a transações orientadas por memória será implementado em um futuro próximo.

ps: o Mysql oferece suporte a muitos mecanismos de armazenamento, os acima são apenas mecanismos de armazenamento comuns e também suportam personalização, ou seja, escreva um por conta própria

V. Comparação do uso de diferentes mecanismos de armazenamento

1. Visualize o mecanismo de armazenamento

show engines;  # 查看安装的mysql所有支持的存储引擎
show variables like 'storage_engine%';  # 查看当前正在使用的存储引擎

image-20210130160655547

2. Crie diferentes tabelas e especifique diferentes mecanismos de armazenamento

create table innodb_t01(id int) engine=innodb;        # 末尾指定InnoDB存储引擎
create table myisam_t02(id int) engine=myisam;        # 指定MyISAM存储引擎
create table memory_t03(id int) engine=memory;        # 指定memory存储引擎
create table blackhole_t04(id int) engine=blackhole;  # 指定Blackhole存储引擎

imagem-20210130162213876

image-20210130163155241

3. Insira os dados nas quatro tabelas, respectivamente

insert into innodb_t01 values(1),(2);   # 插入 ID 1 和 2 ,下同
insert into myisam_t02 values(1),(2);
insert into memory_t03 values(1),(2);
insert into blackhole_t04 values(1),(2);

imagem-20210130162935995

4. Veja as alterações de conteúdo das quatro tabelas

select * from innodb_t01;
select * from myisam_t02;
select * from memory_t03;
select * from blackhole_t04;  # 注意 : 黑洞

image-20210130163832253

Conclusão : para uma tabela do tipo buraco negro, inserir quaisquer dados na tabela é equivalente a jogar em um buraco negro, e nunca haverá registros na tabela

5. Reinicie o Mysqld para ver as mudanças na tabela de memória

  • Reinicie o mysql

imagem-20210130164113235

  • Verifique a tabela memory_t03 novamente

image-20210130164315199

Conclusão : Para tabelas de tipo de memória, após reiniciar o mysql ou reiniciar a máquina, os dados na tabela serão apagados

Seis. Operação detalhada da mesa

O próximo artigo irá apresentar o funcionamento da mesa em detalhes

Acho que você gosta

Origin blog.csdn.net/songhaixing2/article/details/113441567
Recomendado
Clasificación