otimização de banco de dados - o que faz índice

índice de banco de dados, no final é o que fazer?

Pergunta 1. Por que o índice de design de banco de dados?

 

1000W salvo livros da biblioteca, encontrados a partir do "arquiteto do Road", uma verificação de livros, que podem ser encontrados quando ir?

Então, bibliotecário projetar um conjunto de regras:

classe (1) put história no primeiro andar, segundo andar, put aula de literatura, terceiro andar, coloque-classe ...

(2) ISTO classe, a classe foi dividida em software, categoria de hardware ...

(3) categoria de software, classificado pelo título e sequenciador ...

A fim de encontrar rapidamente um livro.

 

Em analogia contraste, o armazenamento 1000W banco de dados de dados, registros name = "shenjian" a partir do qual para encontrar uma seção da investigação, a ser encontrada quando ir?

Então, deve haver um índice , o banco de dados usado para melhorar a velocidade de pesquisa.

 

Pergunta 2. Hash (Hash) do que a árvore (árvore) mais rápido, por isso deve projetar a estrutura do índice em uma árvore?

 

Acelerar a velocidade de estrutura de dados de pesquisa, são comuns duas categorias:

(1) de hash , o HashMap por exemplo, consulta / inserção / alterar / suprimir a complexidade média tempo é O (1);

(2) a árvore , por exemplo, em relação de busca em árvore binária, consulta / inserção / alterar / suprimir a complexidade média tempo é O (lg (n));

 

Você pode ver, se é uma solicitação ou leitura e escrita pedido , o tipo de índice hash, o índice deve ser mais rápido do que uma árvore, por isso, a estrutura índice de árvore a ser projetado para fazer?

Voice-over: 80% dos alunos não poderia responder a todas entrevista.

 

Índice destina-se a árvore, e SQL relacionados com as necessidades.

 

Para tal uma única linha de consulta necessidades de SQL:

SELECT * FROM t onde name =”shenjian”;

De fato índice hash é mais rápido, porque cada consulta apenas um registro.

Narrador: Então, se os requisitos de negócios são o acesso one-way, como passaporte, pode realmente usar um índice hash.

 

Mas para triagem consulta necessidades de SQL:

  • Grupos: grupo por

  • Ordenar por: Ordenar por

  • Compare: <,>

  • ...

Hash tipo de índice, a complexidade de tempo será reduzida para o (n), e a árvore de recurso "ordenada", ainda capaz de manter O (log (n)) de alta eficiência.

 

Qualquer demanda do projeto de bullying.

 

Dizer mais uma coisa, não InnoDB não suportam índices hash.

 

Pergunta 3. Por que usar um índice de banco de dados B + árvore?

A fim de manter a integridade do sistema de conhecimento, uma introdução breve de várias árvores.

 

A primeira: árvore de busca binária

Binário árvore de busca, como mostrado acima, é o mais conhecido de uma estrutura de dados que descreve não começar, por isso não é adequado para uso como um índice de banco de dados?

(1) Quando a quantidade de dados, quando a altura da árvore será relativamente alta, uma grande quantidade de dados quando o pedido será mais lenta;

(2) Cada lojas nó apenas um registro, a consulta pode causar uma série de vezes o disco IO;

Narrador: Esta árvore é frequentemente encontrada em livros da faculdade, por isso, o mais conhecido.

 

A segunda: Árvore B

B árvore, como mostrado acima, que é caracterizado por:

(1) não é mais uma busca binária, mas procurando m garfo;

(2) nó de folha, nós não-folha, os dados são armazenados;

(3) sequência de passagem, todos os nós podem ser obtidos;

Dobragem, realmente não querem introduzir esta característica: o número de palavras-chave contida nos não-raiz nó j satisfaz, (┌m / 2┐) -1 <= J <= m 1-. , Para satisfazer esta condição divisão nó.

 

estrutura de dados B-tree é percebido como um índice é criado, porque ele pode aperfeiçoar uso de "princípio da localidade."

 

Qual é o princípio da localidade?

O princípio lógico da localidade é a seguinte:

(1) Memória ler e blocos de gravação para leitura e gravação em disco lento e muito mais lento;

 

(2) disco read-ahead : disco ler e escrever não é lido na demanda, mas pela página read-ahead, irá ler uma página de dados, cada um mais de carregamento de dados, dados a serem lidos se o futuro neste uma página, você pode evitar disco futuro IO, melhorar a eficiência;

Narrador: Em geral, uma página de dados é 4K.

 

(3) o princípio da localidade : Software projetado para tentar seguir a "centralização de dados de leitura" e "o uso de dados para uma grande probabilidade de que os dados serão utilizados em sua vizinhança", disco tão cheio leitura antecipada pode melhorar IO de disco;

 

Por que índices B-tree para?

(1) Uma vez que m é bifurcado, a altura pode ser grandemente reduzida;

(2) Cada nó pode armazenar o registro j-th, se o tamanho do nó está definido para o tamanho da página, por exemplo 4K, pode utilizar plenamente as características do read-ahead, a IO reduzir muito rígido;

 

Terceiro: B + Tree

Árvore B +, como mostrado acima, m é ainda árvores de busca binária, B-árvores na base, fez algumas melhorias :

(1), o nó não-folha é não armazenar dados mais longos, os dados são armazenados apenas em nós de folhas do mesmo nível;

Vo: B + nó raiz da árvore para cada comprimento de percurso da mesma, e uma árvore-B não é o caso.

 

(2) folhas, o aumento da lista, a aquisição de todos os nós já não é necessário no fim de passagem;

 

Estas melhorias permitem a árvore B + tem características melhores do que o B-tree:

(1) Procurar a gama, após o posicionamento min e, o nó de folha intermédia max, o resultado é definido, em sequência, sem retrocesso;

Voice-over: muito em consultas alcance com SQL, que é uma árvore B + maior vantagem que o B-tree.

 

(2) os nós folha armazenar as linhas reais, linhas de armazenamento relativamente apertado, armazenamento em disco para grandes quantidades de dados; nós não-folha PK armazenar registros para a aceleração consulta, ajuste na memória;

 

(3) nós não-folha, a gravação actual não é armazenado, mas só regista CHAVE armazenamento, em seguida, na mesma memória, B + índice de árvore pode armazenar mais;

 

Finalmente, sob digamos quantificar, Por garfo m árvore B + do que a altura de busca árvore binária muito muito reduzida?

Provavelmente as contas:

(1) o princípio de localização, o tamanho de um nó é definido como um, um 4K, supondo que existe uma chave de 8 bytes, um nó pode armazenar 500 CHAVE, isto é, j = 500

árvore (2) m-ária, cerca m / 2 <= J <= m, o que pode quase árvore 1000

(3) Em seguida:

Uma árvore: o nó 1, 1 * 500 KEY, o tamanho de 4K

árvore camada: nodos 1000, 1000 * 500 = 50 W uma chave, tamanho de 1000 * 4K = 4M

Três árvores: nó 1000 * 1000 1000 * 1000 * 500 = 500 000 000 CHAVE, tamanho 1000 * 1000 * 4K = 4G

Voice-over: a quantidade de ajuda ter um olhar não há miscalculate.

 

Você pode ver, armazenar grandes quantidades de dados (500 milhões), a árvore não precisa de muita profundidade (altura 3), o índice não é muita memória (4G).

 

resumo

  • índice de banco de dados é usado para acelerar as consultas

  • Embora o índice hash é O (1), a árvore de índice é O (log (n)), mas há muitos SQL demand "ordenada", de modo que o banco de dados usando o índice de árvore

  • O InnoDB não suportam índices hash

  • Os dados read-ahead idéia é: leia a leitura de disco e não é necessário escrever, mas pré-leitura página a página, uma página irá ler os dados, cada um mais carga de dados, a fim de reduzir disco IO futuro

  • O princípio da localidade : Software projetado para tentar seguir a "centralização de dados de leitura" e "o uso de dados para uma grande probabilidade de que os dados serão utilizados em sua vizinhança", disco tão cheio leitura antecipada pode melhorar disco IO

  • O banco de dados índice mais comumente usado de B + tree:

(1) é adequado para armazenamento em disco, pode fazer pleno uso do princípio da localidade, disco read-ahead;

(2) muito baixa altura da árvore, capaz de armazenar grandes volumes de dados;

(3) o índice em si é pequena quantidade de memória;

(4) pode ser um bom suporte para consultas único ponto, consulta de intervalo, inquirições de ordenação;

 

Quanto mais você entender, quanto mais não, a forma como o conhecimento é progressivo

Publicado 115 artigos originais · ganhou elogios 41 · vê 60000 +

Acho que você gosta

Origin blog.csdn.net/pangzhaowen/article/details/105122025
Recomendado
Clasificación