SELECT * FROM aluno WHERE id = 42 lê quantas páginas?sem índice lê a tabela inteira, página por página cerca de 20.000 com índice desce uma árvore até a chave 42 3
O M1 guardou os registros, e o M2 evitou ler a mesma página duas vezes. Falta saber qual página ler.
A ideia da árvore B: um nó do tamanho de uma página, com centenas de chaves e centenas de filhos. A árvore fica larga e baixa.
Bayer e McCreight, Organization and Maintenance of Large Ordered Indexes, 1972.
Cada chave aparece uma vez, e o dado fica junto dela, em qualquer nível. A busca por 30 para na raiz.
Os dados ficam só nas folhas, que são encadeadas. 30 e 60 aparecem duas vezes: na raiz, só para guiar a descida.
● página e slot do registro. Sem dado, o nó interno cabe mais filhos por página, e as folhas encadeadas leem uma faixa em ordem. É a B+ que os bancos usam, e é a que o minidb vai ter.
Árvore B+ com no máximo 3 chaves por nó. Insira, nesta ordem: 10, 20, 5, 30, 25, 40, 15.
No máximo 3 chaves por nó. Ordem: 10, 20, 5, 30, 25, 40, 15.
Cabem numa folha só, em ordem. A folha, que também é a raiz, está cheia.
Com ele seriam 4 chaves. Não cabe.
A folha divide em [5 10] e [20 30]. O 20 sobe para uma raiz nova, e a árvore ganha o segundo nível.
No máximo 3 chaves por nó. Ordem: 10, 20, 5, 30, 25, 40, 15.
A árvore do slide anterior.
25 ≥ 20, desce pela direita. A folha fica cheia.
Também vai para a direita, e seriam 4 chaves.
A folha divide em [20 25] e [30 40]. O 30 sobe, e a raiz ainda tem espaço.
No máximo 3 chaves por nó. Ordem: 10, 20, 5, 30, 25, 40, 15.
15 < 20, desce pela esquerda. Cabe, e não há divisão.
WHERE id = 40Na raiz, 30 ≤ 40 < 60: desce pelo filho do meio. Na folha, acha 40 e devolve página e slot. Duas páginas lidas.
WHERE id BETWEEN 20 AND 65Desce até o 20, como na consulta ao lado, e segue as setas de folha em folha. Para no 70, que passou de 65.
minidbSELECT * FROM aluno WHERE id = 42 M1 página e arquivo lê 4096 bytes no deslocamento certo M2 cache de páginas entrega cada nó, da memória ou do disco M3 árvore B+ desce três nós e devolve (página 812, slot 7) M4 parser e catálogo entende o texto, sabe que aluno tem índice em id M5 executor escolhe a varredura por índice
Cada módulo só usa o que vem antes dele. A árvore não sabe o que é SQL, e o cache não sabe o que é uma árvore. Para ele, um nó é uma página como outra qualquer.
kill -9Quinta, 08/10: busca e inserção sem divisão. Terça, 13/10: divisão de nó. No NOTES.md, digam como vocês representaram um nó dentro da página.
Parta da árvore final do exercício 1, com no máximo 3 chaves por nó. Insira, nesta ordem: 35, 45, 50, 55.
WHERE id BETWEEN 12 AND 33?