Arquitetura MySQL, mecanismo de armazenamento MySQL, índice

Arquitetura MySQL

camada de conexão

Responsável por estabelecer conexões e autenticação com clientes e programas...

camada de serviço

cache do otimizador de consulta do analisador de interface sql

camada do motor

Responsável por conectar-se ao sistema de arquivos de dados e gravar dados

camada de arquivo físico

Responsável por armazenar dados de tabelas e arquivos de log, que dependem de logs

Mecanismo de armazenamento MySQL

O mecanismo é uma tecnologia que interage especificamente com os arquivos do banco de dados. Diferentes métodos de implementação do mecanismo são diferentes.

Mecanismo de banco de dados, implementador específico

Motores comumente usados

Myisam não suporta transações e é adequado para muitas consultas, não suporta chaves estrangeiras, não suporta bloqueios de linha, suporta bloqueios de tabela, suporta índices de texto completo e armazena o número total de linhas na tabela.

select count(*) from admin pode obter diretamente o número total de linhas, o que é rápido

innodb suporta transações, adequado para adições, exclusões e modificações, suporta transações, bloqueios de tabela, bloqueios de linha, suporta cache, suporta incremento automático de chave primária, suporta índices de texto completo e não armazena o número total de linhas na tabela

select count(*) from admin O autocálculo é lento

Insira esta instrução no banco de dados para consultar os mecanismos suportados pelo banco de dados

show engines

índice

O índice de array pode encontrar dados rapidamente em um determinado local por meio do índice

Por que ter um índice?

Se você não usar um índice, a consulta começará na primeira linha e pesquisará linha por linha até que os dados necessários sejam encontrados. Se a quantidade de dados não for grande, a eficiência da consulta será relativamente baixa.

o que é índice

Índices são estruturas de dados que ajudam o MySQL a obter dados de forma eficiente.

Estrutura de dados classificada para pesquisa rápida

Mantenha os dados em uma estrutura de dados para facilitar a pesquisa

Princípio do índice

O índice é semelhante ao catálogo de um livro. Podemos consultar rapidamente nossos dados por meio do catálogo e restringir o escopo da consulta.

Vantagens da indexação

Melhorar a eficiência da recuperação de dados e reduzir o custo de IO do banco de dados;

A classificação de dados por meio de colunas de índice reduz o custo de classificação de dados e reduz o consumo de CPU;

Desvantagens da indexação

Também requer espaço de memória

Ao adicionar, modificar ou excluir operações em uma tabela, você também precisa modificar as informações do índice enquanto opera os dados.

Princípios de criação de índice

Embora os índices sejam bons, não os use indiscriminadamente

Quando um índice é necessário?

A chave primária cria automaticamente um índice exclusivo, índice de chave primária

As colunas usadas como condições de consulta são adequadas para a criação de índices

Recomenda-se criar um índice para chaves estrangeiras

Classificar e agrupar campos são adequados para adicionar índices

Quando não é recomendado usar índices?

Poucos registros de tabela

Adicione, modifique e exclua tabelas usadas com frequência. Divida a tabela original em tabelas separadas para separar a leitura e a gravação.

Não é uma condição de consulta

Os dados são repetidos e distribuídos uniformemente, por exemplo: género

Classificação do índice

Índice de chave primária:

Após definir a chave primária, o banco de dados criará automaticamente um índice. Ele não pode estar vazio. É único. Uma tabela só pode ter uma chave primária.

Índice de valor único:

Um índice contém uma coluna e uma tabela pode ter vários índices de valor único.

Índice único:

Os dados não podem ser repetidos

Índice combinado (índice composto)

Várias colunas em um índice

Princípio do prefixo mais à esquerda para índices combinados

Ao usar um índice combinado, a coluna mais à esquerda deve aparecer, caso contrário o índice será inválido.

Por exemplo, existem três colunas na tabela: a, b e c. Crie um índice combinado para as duas colunas a e b.

Por exemplo, selecione * na tabela onde o índice a=''and b='' entra em vigor

selecione * da tabela onde o índice b=''and a='' entra em vigor

selecione * da tabela onde o índice a=''and c='' entra em vigor

selecione * da tabela onde o índice b=''and c='' não entra em vigor

Use um nome de consulta difusa como %张%; Escrito assim, fará com que o índice da coluna de nome se torne inválido. Não é recomendado usar consulta difusa para semelhantes.

É recomendado usar índice de texto completo no mysql8

Índice de texto completo

Quando a consulta difusa é necessária, o índice geral é inválido e então o índice de texto completo pode ser usado.

CREATE FULLTEXT INDEX 索引名 ON 表名(字段名) WITH PARSER ngram; 

SELECT 结构 FROM 表名 WHERE MATCH(列名) AGAINST(搜索词') 

Ver índice

SHOW INDEX FROM 表名;

Estrutura de dados do índice

O mecanismo MySQL Innodb usa números B+ como estrutura de dados para armazenar índices por padrão.

Classificado, um nó pode armazenar vários dados. A expansão horizontal reduz a altura dos dados.

Nós não folha não armazenam dados, apenas índices, e mais índices podem ser colocados

Os registros de dados são armazenados em nós folha. Se você encontrar o índice, encontrará os dados.

Há um ponteiro de cadeia entre todos os nós folha, que é muito adequado para consultas de intervalo como: idade>20 idade<50

Índice clusterizado e índice não clusterizado

Índice clusterizado :

Depois que o índice for encontrado, os dados serão encontrados e esse índice será um índice clusterizado.

A chave primária pode encontrar diretamente os dados

Se você consultar o número do aluno com base no valor do número do aluno, poderá acertar diretamente o número do aluno. Nesse cenário, o número do aluno é agrupado.

Índice não clusterizado :

O índice foi encontrado, mas os dados não foram encontrados. Você precisa consultar a tabela novamente com base na chave primária.

Consulte o número e o nome do aluno com base no valor do número do aluno. Embora o número do aluno esteja indexado, o nome ainda precisa ser consultado. A chave primária precisa ser encontrada com base no número do aluno e a consulta é retornada à tabela por meio a chave primária. Este cenário não é clusterizado.

O mecanismo MyISAM usa um design sem cluster, mesmo para índices de chave primária. O arquivo de índice e o arquivo de dados não estão no mesmo arquivo.

Acho que você gosta

Origin blog.csdn.net/crraxx/article/details/122610739
Recomendado
Clasificación