INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/20111© 2012...

26
INF 1010 Estruturas de Dados Avançadas Implementação de Árvores B no Oracle 17/10/2011 1 © 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1

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.

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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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.

© 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