INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012...
Transcript of INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012...
![Page 1: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/1.jpg)
1
INF 1010Estruturas de Dados Avançadas
Implementação de Árvores B no Oracle
17/10/2011 © 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1
![Page 2: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/2.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 2
Armazenamento no Oracle
• Estrutura de armazenamento
17/10/2011
![Page 3: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/3.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 3
Armazenamento no Oracle
• Armazenamento de Tabelas
17/10/2011
![Page 4: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/4.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 4
Armazenamento no Oracle
• Anatomia de um bloco
17/10/2011
![Page 5: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/5.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 5
Armazenamento no Oracle
• Exemplo de uma tabela
17/10/2011
![Page 6: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/6.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 6
Armazenamento no Oracle
• Anatomia de um bloco
17/10/2011
![Page 7: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/7.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 7
Árvores B em Oracle
• Características da implementação• Segue uma forma de árvores B*
• Uma árvore está sempre balanceada
• Cada folha aponta para a antecessora e a sucessora
• Cada folha contém chaves e apontadores para as linhas das tabelas
• Update = delete + insert
17/10/2011
![Page 8: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/8.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 8
Árvores B em Oracle
• Árvores B*• As chaves estão armazenadas nos nós internos, folhas e raiz (como em árvores B)
• Utilizam uma técnica de redistribuição de chaves, chamada de two-to-three split
• A operação de split é adiada até que dois nós irmãos estejam completamente cheios; quando isto corre, o conteúdo dos nós irmãos é redistribuído
17/10/21
![Page 9: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/9.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 9
Árvores B em Oracle
• Uma árvore B* de ordem m apresenta as seguintes propriedades:• Cada nó possui no máximo m filhos
• Uma folha contém no mínimo⌊(2m-1)/3⌋ chaves e no máximo m-1
• Todas as folhas estão no mesmo nível
• Todo nó, exceto a raiz e as folhas, possuem no máximo (2m-1)/3 descendentes
• Um nó interno com k filhos possui k-1 chaves
17/10/21
![Page 10: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/10.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 10
Árvores B em Oracle
• Exemplo de uma árvore B indexando o atributo EMPNO
17/10/2011
![Page 11: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/11.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 11
Árvores B em Oracle
• Exemplo de uma árvore B indexando o atributo EMPNO
17/10/2011
![Page 12: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/12.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 12
Árvores B em Oracle
17/10/2011
![Page 13: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/13.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 13
Árvores B em Oracle
17/10/2011
![Page 14: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/14.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 14
Árvores B em Oracle
17/10/2011
![Page 15: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/15.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 15
Árvores B em Oracle
17/10/2011
![Page 16: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/16.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 16
Árvores B em Oracle
17/10/2011
![Page 17: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/17.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 17
Árvores B em Oracle
17/10/2011
![Page 18: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/18.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 18
Árvores B em Oracle
17/10/2011
![Page 19: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/19.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 19
Árvores B em Oracle
• Exemplo de acesso à árvore B indexando o atributo EMPNO
17/10/2011
![Page 20: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/20.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 20
Árvores B em Oracle
17/10/2011
![Page 21: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/21.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 21
Árvores B em Oracle
• Agrupamento Ruim
A tabela deve ser reconstruída e reordenada
• Agrupamento Bom
17/10/2011
![Page 22: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/22.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 22
Árvores B em Oracle
• Alocação de espaço livre (PCTFREE)• Oracle reserva uma percentagem do espaço como “livre” (default =
10%)
• Reduz e retarda a divisão dos nós de uma árvore B
• Exemplo:
PCTFREE = 50% PCTFREE = 10%
17/10/2011
![Page 23: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/23.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 23
Árvores B em Oracle
• Problema com alocação de espaço livre (PCTFREE)
17/10/2011
![Page 24: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/24.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 24
Árvores B em Oracle
• Problema com alocação de espaço livre (PCTFREE)
17/10/2011
![Page 25: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/25.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 25
Árvores B em Oracle
• Tratamento de remoções• Reciclagem de espaço livre (criado por remoções) é retardado
• Blocos livres são colocados em uma lista e reciclados (embora permaneçam na árvore)
• Pode causar desperdício de espaço, se PCTFREE for alta, causando fragmentação da árvore
17/10/2011
![Page 26: INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/552fc134497959413d8d7e39/html5/thumbnails/26.jpg)
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 26
Resumo
• A implementação de árvores B no ORACLE...• Usa uma variante árvores B*
• Mantém as árvores balanceadas
• Reusa o espaço liberado por remoções
• Comprime chaves (não discutido)
17/10/2011