Table of Contents
Este capítulo define la interfaz entre el sistema central de PostgreSQL y los métodos de acceso a índices (index access methods), que gestionan los tipos de índices individuales. El sistema central no sabe nada sobre los índices más allá de lo que se especifica aquí, por lo que es posible desarrollar tipos de índices completamente nuevos escribiendo código adicional.
Todos los índices en PostgreSQL son lo que técnicamente se conoce
como índices secundarios; es decir, el índice está
físicamente separado del archivo de la tabla que describe. Cada índice
se almacena como su propia relación física y, por lo tanto, se describe
mediante una entrada en el catálogo pg_class. El contenido de un
índice está completamente bajo el control de su método de acceso a índices. En
la práctica, todos los métodos de acceso a índices dividen los índices en páginas de
tamaño estándar para poder utilizar el gestor de almacenamiento y el gestor de búfer ordinarios
para acceder al contenido del índice. (Todos los métodos de acceso a índices existentes
utilizan además la disposición de página estándar descrita en Section 66.6, y la mayoría utiliza el mismo formato para las cabeceras de
tuplas de índice; pero estas decisiones no son obligatorias para un método de acceso).
Un índice es efectivamente un mapeo de algunos valores clave de datos a los identificadores de tuplas, o TIDs, de las versiones de fila (tuplas) en la tabla padre del índice. Un TID consta de un número de bloque y un número de elemento dentro de ese bloque (consulta Section 66.6). Esta información es suficiente para recuperar una versión de fila concreta de la tabla. Los índices no saben directamente que bajo MVCC puede haber múltiples versiones existentes de la misma fila lógica; para un índice, cada tupla es un objeto independiente que necesita su propia entrada de índice. Por lo tanto, una actualización de una fila siempre crea entradas de índice completamente nuevas para la fila, incluso si los valores clave no cambiaron. (Las tuplas HOT son una excepción a esta afirmación; pero los índices tampoco tratan con ellas). Las entradas de índice para las tuplas muertas se recuperan (mediante el vaciado o vacuuming) cuando las propias tuplas muertas son recuperadas.