1. Visualize o mecanismo de armazenamento
show engines;
# 或
show engines\G
2. Defina o mecanismo de armazenamento padrão do sistema
- Veja o mecanismo de armazenamento padrão:
show variables like '%storage_engine%';
#或
SELECT @@default_storage_engine;
- Modifique o mecanismo de armazenamento padrão
Se o mecanismo de armazenamento da tabela não for especificado explicitamente na instrução que cria a tabela, o InnoDB
mecanismo de armazenamento da tabela será usado por padrão.
SET DEFAULT_STORAGE_ENGINE=MyISAM;
Ou modifique my.cnf
o arquivo:
default-storage-engine=MyISAM
# 重启服务
systemctl restart mysqld.service
3. Defina o mecanismo de armazenamento da tabela
O mecanismo de armazenamento é responsável por extrair e gravar dados na tabela. Podemos fazer isso, 不同的表设置不同的存储引擎
o que significa que diferentes tabelas podem ter diferentes estruturas físicas de armazenamento e diferentes métodos de extração e gravação.
3.1 Especifique o mecanismo de armazenamento ao criar a tabela
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
3.2 Modifique o mecanismo de armazenamento da tabela
ALTER TABLE 表名 ENGINE = 存储引擎名称;
4.Introdução do motor
4.1 Mecanismo InnoDB : mecanismo de armazenamento de transações com função de suporte de chave estrangeira
- MySQL inclui o mecanismo de armazenamento InnoDB a partir de 3.23.34a.
大于等于5.5之后,默认采用InnoDB引擎
. - InnoDB é MySQL
默认事务型引擎
e foi projetado para lidar com grandes quantidades de transações de curta duração. A confirmação completa e a reversão das transações podem ser garantidas. - Além de adicionar e consultar, também são necessárias operações de atualização e exclusão, portanto, o mecanismo de armazenamento InnoDB deve ser preferido.
- A menos que haja um motivo muito especial para usar outro mecanismo de armazenamento, o mecanismo InnoDB deve ter prioridade.
- Estrutura do arquivo de dados:
- A tabela name.frm armazena a estrutura da tabela (no MySQL8.0, mesclada na tabela name.ibd)
- Nome da tabela.ibd armazena dados e índices
- InnoDB é
为处理巨大数据量的最大性能设计
.- Nas versões anteriores, os dados do dicionário eram armazenados em arquivos de metadados, tabelas não transacionais, etc. Esses arquivos de metadados foram excluídos. Por exemplo:
.frm
,.par
,.trn
,.isl
,.db.opt
etc. não existem mais no MySQL8.0.
- Nas versões anteriores, os dados do dicionário eram armazenados em arquivos de metadados, tabelas não transacionais, etc. Esses arquivos de metadados foram excluídos. Por exemplo:
- Comparado com o mecanismo de armazenamento do MyISAM,
InnoDB写的处理效率差一些
ocupará mais espaço em disco para salvar dados e índices. - MyISAM armazena em cache apenas o índice, não os dados reais; o InnoDB não apenas armazena em cache o índice, mas também armazena em cache os dados reais,
对内存要求较高
e o tamanho da memória tem um impacto decisivo no desempenho.
4.2 Mecanismo MyISAM : o principal mecanismo de armazenamento sem transações
- MyISAM oferece um grande número de recursos, incluindo indexação de texto completo, compactação, funções espaciais (GIS), etc., mas MyISAM
不支持事务、行级锁、外键
tem uma falha indiscutível崩溃后无法安全恢复
. 5.5之前默认的存储引擎
- A vantagem é o acesso
速度快
, não há exigência de integridade de transações ou aplicações baseadas em SELECT e INSERT - Há armazenamento constante adicional para estatísticas. Portanto, a eficiência da consulta de count(*) é muito alta
- Estrutura do arquivo de dados:
- Nome da tabela.estrutura da tabela de armazenamento frm
- Nome da tabela.Dados de armazenamento MYD (MYData)
- Nome da tabela.Índice de armazenamento MYI (MYIndex)
- Cenários de aplicativos: aplicativos somente leitura ou negócios baseados em leitura
4.3 Mecanismo de arquivo: usado para arquivamento de dados
4.4 Motor Blackhole : as operações de gravação são descartadas e as operações de leitura retornarão conteúdo vazio
4.5 Mecanismo CSV: Ao armazenar dados, separe cada item de dados com vírgulas
4.6 Mecanismo de memória: tabelas colocadas na memória
4.7 Mecanismo federado : acesse tabelas remotas
4.8 Mecanismo de mesclagem: gerencia uma coleção de tabelas composta por múltiplas tabelas MyISAM
4.9 Mecanismo NDB: Mecanismo de armazenamento dedicado ao cluster MySQL
5.MyISAM e InnoDB
Item comparativo | MeuISAM | InnoDB |
---|---|---|
chave estrangeira | não suporta | apoiar |
romances | não suporta | apoiar |
Bloqueio de tabela de linhas | Bloqueio de tabela, mesmo que um registro seja operado, toda a tabela será bloqueada, o que não é adequado para operações altamente simultâneas. | O bloqueio de linha bloqueia apenas uma determinada linha durante a operação e não afeta outras linhas. É adequado para operações de alta simultaneidade. |
esconderijo | Apenas o índice é armazenado em cache, não os dados reais | Não apenas armazenar em cache o índice, mas também armazenar em cache os dados reais requer muita memória, e o tamanho da memória tem um impacto decisivo no desempenho. |
Use sua própria tabela de sistema | S | N |
ponto de foco | Desempenho: economize recursos, consuma menos, negócios simples | Transações: gravações simultâneas, transações, recursos maiores |
Instalação padrão | S | S |
Usado por padrão | N | S |