Capítulo 62. Definição da interface de método de acesso a índice

Índice

62.1. Estrutura básica da API para índices
62.2. Funções de método de acesso a índice
62.3. Index Scanning
62.4. Index Locking Considerations
62.5. Index Uniqueness Checks
62.6. Index Cost Estimation Functions

Esse capítulo define a interface entre o núcleo do sistema PostgreSQL e os métodos de acesso a índice, que gerenciam os tipos de índice individuais. O núcleo do sistema não sabe nada sobre índices além do que é especificado aqui, portanto é possível desenvolver tipos de índice inteiramente novos escrevendo código complementar.

Todos os índices do PostgreSQL são conhecidos tecnicamente como índices secundários; isto é, o índice está fisicamente separado do arquivo de tabela que descreve. Cada índice é armazenado como sua própria relação e, portanto, é descrito por uma entrada no catálogo pg_class. O conteúdo de um índice está inteiramente sob o controle do seu método de acesso a índice. Na prática, todos os métodos de acesso a índice dividem os índices em páginas de tamanho padrão para poderem usar o gerenciador de armazenamento regular e o gerenciador de buffer para acessar o conteúdo do índice. (Além disso, todos os métodos de acesso a índice existentes usam o modelo de página padrão descrito em Disposição da página do banco de dados, e a maioria usa o mesmo formato para cabeçalhos de tuplas de índice; mas essas decisões não são impostas a um método de acesso.)

Um índice é efetivamente um mapeamento de alguns valores de chave de dados para identificadores de tupla, ou TIDs, de versões de linha (tuplas) na tabela mãe do índice. Um TID consiste em um número de bloco e um número de item dentro desse bloco (veja Disposição da página do banco de dados). Essa informação é suficiente para buscar uma versão de linha específica da tabela. Os índices não estão diretamente cientes de que, no MVCC, pode haver diversas versões existentes da mesma linha lógica; para um índice, cada tupla é um objeto independente que precisa de sua própria entrada no índice. Assim, a atualização de uma linha sempre cria entradas de índice totalmente novas para a linha, mesmo que os valores-chave não tenham sido alterados. (As tuplas HOT (Heap-Only Tuples) são uma exceção a essa afirmação; mas os índices também não lidam com isso.) As entradas no índice para as tuplas mortas são recuperadas (pelo vacuum) quando as próprias tuplas mortas são recuperadas.

Contato

CSS válido!