PostgreSQL: vistas materializadas

En PostgreSQL, las vistas materializadas son vistas que pueden almacenar datos físicamente. Por lo general, se opta por estos si existe un requisito para el acceso rápido a los datos. Vista materializada almacena en caché el resultado de consultas complejas (que necesitan muchos cálculos y operaciones) y admite además la actualización de los datos almacenados en caché. Las vistas materializadas se definen mediante consultas de base de datos similares a las de Vistas en PostgreSQL.

En este artículo, veremos en detalle las vistas de PostgreSQL Materializes.

Creación de vistas materializadas:

La siguiente declaración se utiliza para crear una vista materializada en PostgreSQL:

CREATE MATERIALIZED VIEW 

Ahora la declaración anterior se puede usar como una consulta en la base de datos como se muestra a continuación:

Syntax: CREATE MATERIALIZED VIEW your_view_name
AS
your_query
WITH [NO] DATA;

Veamos lo que hicimos en la consulta anterior:

  • Primero, necesitamos especificar el nombre de la vista después de la instrucción CREAR VISTA MATERIALIZADA.
  • Luego agregamos la consulta de los datos que necesitamos extraer de las tablas después de la palabra clave AS.
  • Finalmente, si desea cargar los resultados de la consulta en la vista materializada, use la opción CON DATOS; de lo contrario, use la opción SIN DATOS. 

, base de datos de alquiler de DVD de muestra aquí enlace

Ejemplo:

La base de datos dvdrental tiene un nombre de tabla film_category donde todas las películas de comedia tienen un category_id de 4. En este ejemplo, usaremos el concepto de vista materializada para filtrar film_id de todas las películas de comedia en la base de datos.

CREATE MATERIALIZED VIEW comedy_movie_list
AS
SELECT film_id FROM film_category where category_id=4 WITH DATA
;

La vista contiene información recuperada de la tabla film_category sobre las películas con category_id de 4.

Ahora, si consultamos los datos en la vista Comedy_movie_list de la siguiente manera:

SELECT * FROM comedy_movie_list;

Producción:

Refrescante vista materializada:

Para refrescar una vista materializada hacemos uso del siguiente comando:

REFRESH MATERIALIZED VIEW your_view_name;

Ejemplo:

Aquí actualizaremos la vista materializada (comedy_movie_list) creada en el ejemplo anterior:

REFRESH MATERIALIZED VIEW comedy_movie_list;

Producción:

Cuando actualiza datos para una vista materializada, PostgreSQL bloquea toda la tabla, por lo que no puede consultar datos en ella. Para evitar esto, puede utilizar la opción CONCURRENTEMENTE.

REFRESH MATERIALIZED VIEW CONCURRENTLY your_view_name;

 Tenga en cuenta que la opción CONCURRENTEMENTE solo está disponible desde PostgreSQL 9.4.

Descartar vista materializada:

Para eliminar una vista materializada, use la siguiente declaración:

DROP MATERIALIZED VIEW [ IF EXISTS ]  your_view_name;

Ejemplo:

Aquí soltaremos la vista materializada de la lista de películas de comedia creada en el ejemplo anterior:

DROP MATERIALIZED VIEW comedy_movie_list; 

Producción:

Publicación traducida automáticamente

Artículo escrito por kirtikesarvani99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *