64.4 Mapa de Visibilidad (Visibility Map)

Cada relación tiene un mapa de visibilidad para mantener el rastro de cada página que contenga únicamente tuplas que son conocidas para ser visibles en todas las transacciones activas; eso mantiene el rastro de cada página solo en tuplas no congeladas. Son almacenados junto a los datos de la relación principal en una relación bifurcada, es decir, separada o dividida, llamada después del número del módulo filnode de la relación, más el sufijo a_vm. Por ejemplo, si el módulo filenode de una relación es 12345, el Mapa de visibilidad (VM) es almacenado en un archivo llamado 12345_vm, en el mismo directorio del archivo de la relación principal. Nota: Esos índices no tienen un mapa de visibilidad.

El mapa de visibilidad almacena dos bits por página acumulada. El primer bit, si existe, indica que la página es completamente visible, es decir, que la página no contiene tuplas que requieran del proceso de vacuum. Esta información puede ser utilizada por escaneos indexados para responder consultas usando únicamente la tupla de índice. El segundo bit, si existe, indica que todas las tuplas de la página se han congelado.

El mapa es conservado en el sentido de que nos aseguramos de que siempre que se establezca un bit, sabiendo que la condición es verdadera, pero si un bit no está configurado, la condición podría ser falsa. Los bits del mapa de visibilidad sólo se establecen por medio de un Vacuum, pero se borran por cualquier operación de modificación de datos en una página.