Descrição do índice clusterizado e índice não clusterizado

1, o índice clusterizado

Definição: a ordem física das linhas de dados é a mesma que a ordem lógica dos valores da coluna (geralmente a coluna da chave primária). Só pode haver um índice clusterizado em uma tabela. Em termos leigos, isso significa que a ordem relativa de cada parte dos dados na tabela de dados é a mesma que a ordem relativa de seu armazenamento no disco rígido. Como mostrado abaixo.
Insira a descrição da imagem aqui
A coluna de endereço na figura acima indica a unidade de disco rígido onde os dados estão armazenados. id é a chave primária da tabela de dados, que pode ser definida como um índice clusterizado.
A estrutura de armazenamento usada pelo mecanismo de armazenamento innoDB no banco de dados é uma árvore B +. Pode-se acrescentar aqui que a razão pela qual a estrutura de armazenamento usa a árvore B + é porque os dados no banco de dados são armazenados no disco rígido. Para acessar os dados no banco de dados, os dados no disco rígido precisam ser transferidos para o memória. Se a estrutura de armazenamento usa uma árvore binária balanceada ou Com uma estrutura como uma árvore de pesquisa binária, o número máximo de vezes que o disco é acessado é a altura da árvore. Portanto, se a quantidade de dados for muito grande, a altura da árvore é muito alto, o que leva a um grande número de acessos ao disco, o que afeta seriamente a eficiência da pesquisa do banco de dados. A estrutura de armazenamento da árvore B + é diferente. Em innoDB, os nós não-folha da árvore B + são todos tabelas de índice, e apenas os nós folha são os dados reais, e os nós folha da árvore B + são todos conectados por uma lista encadeada. Geralmente, um nó da árvore B + salva um tamanho de bloco de disco de dados, portanto, toda vez que a árvore B + é acessada, os dados de um bloco de disco são transferidos para a memória, o que reduz o número de acessos ao disco e aumenta a eficiência. Portanto, a estrutura do índice clusterizado do InnoDB pode ser representada pela figura a seguir.
Insira a descrição da imagem aqui
A parte azul na figura acima é o nó folha da árvore B +, que armazena os dados reais, e a parte vermelha é o nó não folha, que armazena o ponteiro para os dados reais, ou seja, o nó não folha é a tabela de índice. O índice agrupado na figura acima é o nome da pessoa.
Insira a descrição da imagem aqui
O índice clusterizado na figura acima usa o id da chave primária e o tipo de dados é int. O processo de busca começa a partir do nó raiz.Se o id for maior ou igual a 15 e menor que 56, então o bloco de disco correspondente à subárvore mais à esquerda será carregado na memória. Se o id for maior ou igual a 15 e menor que 20, a subárvore mais à esquerda será carregada na memória para encontrar os dados desejados.

2. Índice não agrupado

Definição: a ordem lógica das linhas de dados em uma tabela de dados é diferente da ordem de armazenamento físico do disco upstream.Uma tabela pode ter vários índices não agrupados.
A ilustração do índice não agrupado é mostrada abaixo.
Insira a descrição da imagem aqui
Pode-se ver na figura acima que o índice não agrupado também usa uma estrutura de árvore B +, mas a diferença do índice agrupado é que o nó folha do índice não agrupado ainda é uma tabela de índice, apontando para os dados reais no disco rígido.
Insira a descrição da imagem aqui
O índice não agrupado na figura acima usa o nome da pessoa como base para a recuperação, e o nó folha armazena o ID da chave primária correspondente ao nome da pessoa. O índice não agrupado dessa estrutura é o índice não agrupado em InnoDB, que é usado para auxiliar o índice agrupado na recuperação de informações.
Se você escrever a seguinte instrução sql.

select username from table where username='Eric'

A instrução SQL na figura acima será recuperada de acordo com o nome da pessoa. Como o nome da pessoa é um índice não agrupado, depois de encontrar o id da chave primária correspondente a [Eric], o índice agrupado é recuperado de acordo com o id para encontrar o bloco de dados correspondente, que também é um índice não agrupado Segunda pesquisa. Portanto, o índice não clusterizado no InnoDB é um índice clusterizado auxiliar.
O índice não agrupado no mecanismo de armazenamento myisam é ligeiramente diferente, o que pode ser representado pela árvore B + na figura abaixo.
Insira a descrição da imagem aqui
Na figura acima, o nó folha do índice não agrupado de myisam armazena o endereço da linha de dados.

Acho que você gosta

Origin blog.csdn.net/ISs_Cream/article/details/110355910
Recomendado
Clasificación